Daniel C. Sobral scribbled this message on Jul 30:
> Dag-Erling Smorgrav wrote:
> >
> > To be precise, I experience a 30% decrease in system time and a 100%
> > increase in user time when I use RE_STARTEND and eliminate the
> > malloc() / memcpy() calls in procfile().
>
> Could you please test my patch that removes malloc() but bot
> memcpy()? Here it is again, though against an old version:
wierd, I was running your patch, and at first I would get from .69 up
to 1.03 seconds run time, but I can't seem to generate that problem
right now... w/ your patches I'm getting around .67 to .7 seconds for:
time ./grep THIS /tmp/ports/freegrep/work/grep-0.10/termcap.long > /dev/null
0.68 real 0.63 user 0.03 sys
0.67 real 0.65 user 0.01 sys
0.67 real 0.63 user 0.03 sys
0.67 real 0.63 user 0.03 sys
0.67 real 0.66 user 0.00 sys
0.67 real 0.64 user 0.02 sys
summary of gprof output:
[3] 50.1 0.02 0.21 108213 procline [3]
[4] 46.7 0.02 0.19 108213 regexec [4]
[7] 28.5 0.13 0.00 108214 mmfgetln [7]
[10] 4.8 0.00 0.02 2393 grep_realloc [10]
with my patch and the exact same command, I get .58 to .59 seconds...
0.58 real 0.54 user 0.03 sys
0.58 real 0.53 user 0.04 sys
0.58 real 0.55 user 0.02 sys
0.58 real 0.57 user 0.00 sys
0.59 real 0.55 user 0.02 sys
0.58 real 0.55 user 0.02 sys
summary of gprof output:
[3] 57.1 0.04 0.19 108213 procline [3]
[4] 48.0 0.02 0.17 108213 regexec [4]
[7] 34.1 0.13 0.00 108214 mmfgetln [7]
[10] 2.0 0.01 0.00 1 _munmap [10]
(I include _munmap because realloc/malloc/free are in the 0.0% on my
patch)
and grep 0.10 w/o patches:
2.82 real 1.63 user 1.12 sys
2.79 real 1.53 user 1.20 sys
2.80 real 1.65 user 1.08 sys
2.84 real 1.67 user 1.10 sys
2.82 real 1.67 user 1.08 sys
2.91 real 1.66 user 1.14 sys
summary of gprof output:
[5] 55.1 1.12 0.00 74985 _madvise [5]
[7] 13.3 0.04 0.23 108213 regexec [7]
[9] 8.4 0.00 0.17 108217 grep_malloc [9]
[13] 6.5 0.13 0.00 108214 mmfgetln [13]
all of the programs were compiled w/ the exact same options... that is
I added -g -pg to the CFLAGS in the Makefile to generate profiling info..
I'm not sure about you, but on my k6/200, the STARTEND is more efficient
than the memcpy/realloc, and to tell you the truth, I can't see why it'd
be more effecient to copy possible multiple kilobytes of data than to just
use indexes instead of modifing a ptr...
right now, I'm trying to think of a way to eliminate the fgetln searching
for end of line... of course this would eliminate some of the simplicity
of design, but we can get a BIG speed increase if we simply don't scan for
the new line unless we NEED to... and if we do, why not use regexec to
search for us?
--
John-Mark Gurney Voice: +1 541 684 8449
Cu Networking P.O. Box 5693, 97405
"The soul contains in itself the event that shall presently befall it.
The event is only the actualizing of its thought." -- Ralph Waldo Emerson
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message