From 904a46958ca0352d6370572723f20a13b5ecf6f5 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 5 May 2017 17:19:33 -0700 Subject: [PATCH] common/config: implement set_prog_path() using 'type -P' Bash's 'type -P' builtin is equivalent to 'which', but it's more efficient because it doesn't involve executing an external binary. Because set_prog_path() is executed 60+ times in common/config, which is sourced by common/rc, which in turn is sourced by every test, switching to 'type -P' actually can make a noticeable performance improvement for short-running or skipped tests. For example: Before: # time ./check generic/002 ... Passed all 1 tests real 0m1.365s user 0m0.746s sys 0m0.644s After: # time ./check generic/002 ... Passed all 1 tests real 0m1.026s user 0m0.511s sys 0m0.470s Signed-off-by: Eric Biggers Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/config | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/common/config b/common/config index b29c0eb0..8211356c 100644 --- a/common/config +++ b/common/config @@ -96,12 +96,7 @@ export RECREATE_TEST_DEV=false # $1 = prog to look for set_prog_path() { - p=`which $1 2> /dev/null` - if [ -n "$p" -a -x "$p" ]; then - echo $p - return 0 - fi - return 1 + type -P $1 } # Handle mkfs.btrfs which does (or does not) require -f to overwrite