summaryrefslogtreecommitdiff
path: root/builtin/grep.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2017-05-25 20:05:23 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-05-26 03:59:05 (GMT)
commit9ec726a4120bb219530faf988198a704ec7dd1f1 (patch)
tree5af66775f7ba959eb926fc38a00a0e8021e36b3e /builtin/grep.c
parent6d423dd542f062a9696c210c33cf33e0657ab923 (diff)
downloadgit-9ec726a4120bb219530faf988198a704ec7dd1f1.zip
git-9ec726a4120bb219530faf988198a704ec7dd1f1.tar.gz
git-9ec726a4120bb219530faf988198a704ec7dd1f1.tar.bz2
grep: skip pthreads overhead when using one thread
Skip the administrative overhead of using pthreads when only using one thread. Instead take the non-threaded path which would be taken under NO_PTHREADS. The threading support was initially added in commit 5b594f457a ("Threaded grep", 2010-01-25) with a hardcoded compile-time number of 8 threads. Later the number of threads was made configurable in commit 89f09dd34e ("grep: add --threads=<num> option and grep.threads configuration", 2015-12-15). That change did not add any special handling for --threads=1. Now we take a slightly faster path by skipping thread handling entirely when 1 thread is requested. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/grep.c')
-rw-r--r--builtin/grep.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/grep.c b/builtin/grep.c
index 12e62fc..bd008cb 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -1238,6 +1238,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
num_threads = GREP_NUM_THREADS_DEFAULT;
else if (num_threads < 0)
die(_("invalid number of threads specified (%d)"), num_threads);
+ if (num_threads == 1)
+ num_threads = 0;
#else
if (num_threads)
warning(_("no threads support, ignoring --threads"));