t / perf / p7821-grep-engines-fixed.shon commit Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees (2d5792f)
   1#!/bin/sh
   2
   3test_description="Comparison of git-grep's regex engines with -F
   4
   5Set GIT_PERF_7821_GREP_OPTS in the environment to pass options to
   6git-grep. Make sure to include a leading space,
   7e.g. GIT_PERF_7821_GREP_OPTS=' -w'. See p7820-grep-engines.sh for more
   8options to try.
   9
  10If GIT_PERF_7821_THREADS is set to a list of threads (e.g. '1 4 8'
  11etc.) we will test the patterns under those numbers of threads.
  12"
  13
  14. ./perf-lib.sh
  15
  16test_perf_large_repo
  17test_checkout_worktree
  18
  19if test -n "$GIT_PERF_GREP_THREADS"
  20then
  21        test_set_prereq PERF_GREP_ENGINES_THREADS
  22fi
  23
  24for pattern in 'int' 'uncommon' 'æ'
  25do
  26        for engine in fixed basic extended perl
  27        do
  28                if test $engine = "perl" && ! test_have_prereq PCRE
  29                then
  30                        prereq="PCRE"
  31                else
  32                        prereq=""
  33                fi
  34                if ! test_have_prereq PERF_GREP_ENGINES_THREADS
  35                then
  36                        test_perf $prereq "$engine grep$GIT_PERF_7821_GREP_OPTS $pattern" "
  37                                git -c grep.patternType=$engine grep$GIT_PERF_7821_GREP_OPTS $pattern >'out.$engine' || :
  38                        "
  39                else
  40                        for threads in $GIT_PERF_GREP_THREADS
  41                        do
  42                                test_perf PTHREADS,$prereq "$engine grep$GIT_PERF_7821_GREP_OPTS $pattern with $threads threads" "
  43                                        git -c grep.patternType=$engine -c grep.threads=$threads grep$GIT_PERF_7821_GREP_OPTS $pattern >'out.$engine.$threads' || :
  44                                "
  45                        done
  46                fi
  47        done
  48
  49        if ! test_have_prereq PERF_GREP_ENGINES_THREADS
  50        then
  51                test_expect_success "assert that all engines found the same for$GIT_PERF_7821_GREP_OPTS $pattern" '
  52                        test_cmp out.fixed out.basic &&
  53                        test_cmp out.fixed out.extended &&
  54                        if test_have_prereq PCRE
  55                        then
  56                                test_cmp out.fixed out.perl
  57                        fi
  58                '
  59        else
  60                for threads in $GIT_PERF_GREP_THREADS
  61                do
  62                        test_expect_success PTHREADS "assert that all engines found the same for$GIT_PERF_7821_GREP_OPTS $pattern under threading" "
  63                                test_cmp out.fixed.$threads out.basic.$threads &&
  64                                test_cmp out.fixed.$threads out.extended.$threads &&
  65                                if test_have_prereq PCRE
  66                                then
  67                                        test_cmp out.fixed.$threads out.perl.$threads
  68                                fi
  69                        "
  70                done
  71        fi
  72done
  73
  74test_done