libbb: use ARG_MAX for bb_arg_max() only if it's 60k+
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 26 Nov 2014 14:17:59 +0000 (15:17 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 26 Nov 2014 14:17:59 +0000 (15:17 +0100)
commit04c14176023c65550fd46c2e44a1aa04d426d69a
tree71ac5af09a5303ba891b28bc879a10e1da92c6dc
parent2835a224cd603489ac08625265d383d4690cb58a
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 <vda.linux@googlemail.com>
include/libbb.h
libbb/sysconf.c