Skip to content

Instantly share code, notes, and snippets.

@d630
Last active October 27, 2016 16:39
Show Gist options
  • Save d630/c91cc79f676b5a9d82427caee7ada761 to your computer and use it in GitHub Desktop.
Save d630/c91cc79f676b5a9d82427caee7ada761 to your computer and use it in GitHub Desktop.
bash: using subshells
% time for ((i=0; i < 1000; i++)); do \bash -c ':;:' ; done
real 0m4.710s
user 0m0.444s
sys 0m1.420s
% time for ((i=0; i < 1000; i++)); do \dash -c ':;:' ; done
real 0m3.047s
user 0m0.080s
sys 0m0.964s
% time for ((i=0; i < 1000; i++)); do (:;:) ; done
real 0m3.057s
user 0m0.076s
sys 0m0.944s
% foo () (:;:)
% time for ((i=0; i < 1000; i++)); do foo ; done
real 0m2.727s
user 0m0.220s
sys 0m0.696s
% time for ((i=0; i < 1000; i++)); do :|{ :;:; } ; done
real 0m4.022s
user 0m0.100s
sys 0m1.436s
% time for ((i=0; i < 1000; i++)); do :|(:;:) ; done
real 0m4.041s
user 0m0.192s
sys 0m1.352s
% time for ((i=0; i < 1000; i++)); do _=$(:;:) ; done
real 0m2.588s
user 0m0.136s
sys 0m0.956s
% time for ((i=0; i < 1000; i++)); do { _=$(:;:); } ; done
real 0m2.540s
user 0m0.148s
sys 0m0.936s
% time for ((i=0; i < 1000; i++)); do ( _=$(:;:) ) ; done
real 0m5.705s
user 0m0.116s
sys 0m0.888s
% time for ((i=0; i < 1000; i++)); do : $(:;:) ; done
real 0m2.559s
user 0m0.256s
sys 0m0.844s
% time for ((i=0; i < 1000; i++)); do <<< $(:;:) ; done
real 0m2.732s
user 0m0.156s
sys 0m1.104s
% time for ((i=0; i < 1000; i++)); do : <(:;:) ; done
real 0m1.077s
user 0m0.052s
sys 0m0.916s
% time for ((i=0; i < 1000; i++)); do <<< <(:;:) ; done
real 0m1.144s
user 0m0.120s
sys 0m1.008s
% time for ((i=0; i < 1000; i++)); do _=<(:;:) ; done
real 0m0.852s
user 0m0.104s
sys 0m0.628s
% time { for ((i=0; i < 1000; i++)); do { :;:; } & done; wait; }
real 0m1.158s
user 0m0.092s
sys 0m0.676s
@d630
Copy link
Author

d630 commented Oct 27, 2016

@ % time { for ((i=0; i < 1000; i++)); do _=<(\ls -d / 1>&3) ; done; } 3>&1 | wc -l
1000

real    0m2.315s
user    0m0.128s
sys 0m0.748s
*@ % time { for ((i=0; i < 1000; i++)); do : <(\ls -d / 1>&3) ; done; } 3>&1 | wc -l
1000

real    0m2.325s
user    0m0.140s
sys 0m0.736s

% time { for ((i=0; i < 1000; i++)); do <<< <(\ls -d / 1>&3) ; done; } 3>&1 | wc -l
1000

real    0m2.421s
user    0m0.144s
sys 0m0.860s

*@ % time { for ((i=0; i < 1000; i++)); do _=$(\ls -d / 1>&3) ; done; } 3>&1 | wc -l
1000

real    0m5.530s
user    0m0.196s
sys 0m0.796s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment