[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
grep branch, master, updated. v3.1-40-g41ac7a9
From: |
Jim Meyering |
Subject: |
grep branch, master, updated. v3.1-40-g41ac7a9 |
Date: |
Sun, 14 Oct 2018 00:23:35 -0400 (EDT) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "grep".
The branch, master has been updated
via 41ac7a99647316b5ea77d70199282fa9bbd731d4 (commit)
from 7179b21b0366062d55e411320ff347c436d05a8a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/grep.git/commit/?id=41ac7a99647316b5ea77d70199282fa9bbd731d4
commit 41ac7a99647316b5ea77d70199282fa9bbd731d4
Author: Jim Meyering <address@hidden>
Date: Thu Sep 6 11:27:01 2018 -0700
grep: triple initial buffer size: 32k->96k
Changing 32k to 96k gives a 3-23% performance improvement.
All timings ran with this diff on top of commit v3.1-39-g7179b21:
for n in 32 64 96 128; do
echo n=$n
perl -pi -e 's/(INITIAL_BUFSIZE =) \d+/$1 '$n/ src/grep.c &&
make AM_CFLAGS=-O3 WERROR_CFLAGS= >& makerr-$n &&
for needle in 1f2 1f298lkjskjhahjklkj34; do
echo " needle=$needle"
for i in $(seq 10); do
env MALLOC_PERTURB_= time -qf%e src/grep $needle w2000
done 2>&1 |sort -g | tee >(head -1|sed 's/^/ /') >
.time-${n}KB-$needle
done
done
Tested searchs: search for a short literal pattern that is not
present in 9.3GB file containing 2000 copies of /usr/dict/words
created via this:
ln -s /usr/share/dict/words k && cat $(yes k|head -2000) > w2000
I ran this command:
env MALLOC_PERTURB_= time src/grep 1f2 w2000
old(32k) vs new elapsed time, best of 10 trials (gcc-9.0.0 20180831, -O3):
32k 64k 96k(%incr) 128k CPU
1.25 1.18 1.16( 7.2) 1.20 address@hidden cache=8MB
1.21 1.16 1.17( 3.3) 1.19 Xeon(R) E3-1505M v5 @ 2.80GHz cache=8MB
2.36 2.29 2.29( 3.0) 2.36 Xeon(R) E5-2680 v4 @ 2.40GHz cache=32MB
1.40 1.32 1.31( 6.4) 1.33 i5-6260U @ 1.80GHz cache=4MB
1.31 1.26 1.24( 5.3) 1.23 AMD FX(tm)-4100 cache=2MB (with only 1000 copies)
Searching for a longer string: 1f298lkjskjhahjklkj34
2.03 1.76 1.61(20.7) 1.53 address@hidden cache=8MB
1.95 1.70 1.56(20.0) 1.51 Xeon(R) E3-1505M v5 @ 2.80GHz
3.27 2.98 2.84(13.1) 3.02 Xeon(R) E5-2680 v4 @ 2.40GHz
2.48 2.12 1.91(23.0) 1.80 i5-6260U @ 1.80GHz cache=4MB
1.72 1.54 1.46(15.1) 1.41 AMD FX(tm)-4100 cache=2MB
* src/grep.c (INITIAL_BUFSIZE): Triple it: 32kB -> 96kB
diff --git a/src/grep.c b/src/grep.c
index fec9a53..aa1d6dd 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -799,7 +799,6 @@ skipped_file (char const *name, bool command_line, bool
is_dir)
static char *buffer; /* Base of buffer. */
static size_t bufalloc; /* Allocated buffer size, counting
slop. */
-enum { INITIAL_BUFSIZE = 32768 }; /* Initial buffer size, not counting slop. */
static int bufdesc; /* File descriptor. */
static char *bufbeg; /* Beginning of user-visible stuff. */
static char *buflim; /* Limit of user-visible stuff. */
@@ -812,6 +811,9 @@ static bool skip_nuls; /* Skip '\0' in data.
*/
static bool skip_empty_lines; /* Skip empty lines in data. */
static uintmax_t totalnl; /* Total newline count before lastnl. */
+/* Initial buffer size, not counting slop. */
+enum { INITIAL_BUFSIZE = 96 * 1024 };
+
/* Return VAL aligned to the next multiple of ALIGNMENT. VAL can be
an integer or a pointer. Both args must be free of side effects. */
#define ALIGN_TO(val, alignment) \
-----------------------------------------------------------------------
Summary of changes:
src/grep.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
hooks/post-receive
--
grep
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- grep branch, master, updated. v3.1-40-g41ac7a9,
Jim Meyering <=