I imagine time A | B would only measure the time taken to run A (since the argument to time is A). What's the solution ?
Asked
Active
Viewed 52 times
2 Answers
1
Depends on the shell. e.g. Bash has a keyword time that times the whole pipeline. An external implementation of time would only time A in your example. A workaround might be to explicitly run an extra shell:
time sh -c "A | B"
Gilles 'SO- stop being evil'
- 807,993
- 194
- 1,674
- 2,175
ilkkachu
- 133,243
- 15
- 236
- 397
-
Technically `time` is not a builtin, but a keyword (in bash, and in ksh and zsh which have the same feature). It has to be so that `time` applies to the following compound command and not just to a simple command. – Gilles 'SO- stop being evil' Jul 11 '17 at 23:42
0
You could also use a subshell, e.g.
time ( A | B )
at least when time is the bash builtin (but then a subshell is useless). If you want to use the time(1) command (see this) you'll better explicitly run some sh -c like answered by iikkachu
Basile Starynkevitch
- 10,411
- 1
- 32
- 52