configure: speed up check_deps()
authorAvi Halachmi (:avih) <avihpit@yahoo.com>
Sun, 5 Aug 2018 03:16:44 +0000 (06:16 +0300)
committerJames Almer <jamrial@gmail.com>
Mon, 27 Aug 2018 14:34:10 +0000 (11:34 -0300)
commit45499e557c808f43175524a98901efeca715813e
treee4ebe58054fee2785b41c6bc6daca1d2a4de709b
parent923586a58f37deedeb01f742e4804bc36736a6bc
configure: speed up check_deps()

x4 - x25 faster.

check_deps() recursively enables/disables components, and its loop is
iterated nearly 6000 times. It's particularly slow in bash - currently
consuming more than 50% of configure runtime, and about 20% with other
shells.

This commit applies few local optimizations, most effective first:
- Use $1 $2 ... instead of pushvar/popvar, and same at enable_deep*
- Abort early in one notable case - empty deps, to avoid costly no-op.
- Smaller changes which do add up:
  - Handle ${cfg}_checking locally instead of via enable[d]/disable
  - ${cfg}_checking: test done before inprogress - x2 faster in 50%+
  - one eval instead of several at the empty-deps early abort path.

- The "actual work" part is unmodified - just its surroundings.

Biggest speedups (relative and absolute) are observed with bash.

Tested-by: Michael Niedermayer <michael@niedermayer.cc>
Tested-by: Helmut K. C. Tessarek <tessarek@evermeet.cx>
Tested-by: Dave Yeo <daveryeo@telus.net>
Tested-by: Reino Wijnsma <rwijnsma@xs4all.nl>
Signed-off-by: James Almer <jamrial@gmail.com>
configure