From 04c14176023c65550fd46c2e44a1aa04d426d69a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 26 Nov 2014 15:17:59 +0100 Subject: libbb: use ARG_MAX for bb_arg_max() only if it's 60k+ Sometimes ARG_MAX is small (like 32k) yet sysconf(_SC_ARG_MAX) is big, and people prefer using the bigger value. OTOH, with sufficiently large ARG_MAX, further wins from sysconf(_SC_ARG_MAX) being bigger are exponentially smaller: you can see 4 times fewer fork+execs when you run find, but when each execed process already takes a thousand parameters it's likely execution time is dominated by what that process does with each parameter. Thus, with this change ARG_MAX is used if it's sufficiently big, otherwise sysconf(_SC_ARG_MAX) is used. Signed-off-by: Denys Vlasenko --- libbb/sysconf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libbb/sysconf.c') diff --git a/libbb/sysconf.c b/libbb/sysconf.c index 031901980..cfad9cdc0 100644 --- a/libbb/sysconf.c +++ b/libbb/sysconf.c @@ -8,7 +8,7 @@ */ #include "libbb.h" -#if !defined(ARG_MAX) && defined(_SC_ARG_MAX) +#if !defined(bb_arg_max) unsigned FAST_FUNC bb_arg_max(void) { return sysconf(_SC_ARG_MAX); -- cgit v1.2.3