On Mon, 12 Feb 2018 15:26:18 -0800 Paul Vixie <paul@redbarn.org> wrote:
Ken Hornstein wrote:
...
you said:
And the programs I tried worked fine. Running best scan time
for 200K messages, scan+gc takes 13.5 seconds while the
regular scan 7.4 seconds.
To me a performance penalty of 50% is not worth it, but I'd be willing
to hear from others.
the various design choices made in MH and in many cases still present in 
NMH were all performance-related. consider the old "MATCHC" logic as an 
example, or the reuse of buffers today vs freeing and re-allocating.
On FreeBSD-386 I get more consistent results. The 46% increase
in time for scan and 28% for pick can probably be recovered
with profiling directed optimizations.  But there are at least
three reasons why this unlikely to happen.
1) I will have to make it happen and I don't have a strong
   desire to work on the current code base.
2) libgc will have to work on every platform of interest and
   it gave me problems on two platforms I tried. I have even less
   of a desire to fix libgc issues.
3) People will find that the same optimizations help the
   non-gc case and you guys will move the goalposts!
non-gc:
$ /usr/bin/time ./scan 1:30000 >/dev/null
       11.67 real         4.69 user         1.53 sys
$ /usr/bin/time ./scan 1:30000 >/dev/null
       11.29 real         4.80 user         1.42 sys
$ /usr/bin/time ./scan 1:30000 >/dev/null
       11.29 real         4.69 user         1.53 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
golang/pick.* .
       13.01 real         6.62 user         1.31 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
golang/pick.* .
       13.00 real         6.63 user         1.29 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
golang/pick.* .
       13.12 real         6.63 user         1.29 sys
gc:
$ /usr/bin/time ./scan 1:30000 >/dev/null
       16.30 real         9.62 user         1.54 sys
$ /usr/bin/time ./scan 1:30000 >/dev/null
       16.98 real        10.19 user         1.53 sys
$ /usr/bin/time ./scan 1:30000 >/dev/null
       16.82 real        10.15 user         1.48 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
       16.59 real         9.89 user         1.61 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
       16.63 real        10.04 user         1.36 sys
$ /usr/bin/time ./pick -from a -and -to b 1:30000 >/dev/null
       16.73 real        10.10 user         1.38 sys
-- 
Nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers