Bruce Dawson wrote: > Hmmm -- again, that doesn't match what I see. bash is suspended while it > waits for expr to run, and the instant that expr completes bash runs again. > This can be seen in the profiler screenshot. The CPU is busy at all times, > and always busy on exactly one process. --- I don't see that on my system.
I ran exprcount() { for (( i=$1;i>0;i=$(expr $i-1) )); do :; done } time exprcount 1000 2.05sec 0.12usr 1.33sys (71.12% cpu) Ishtar:law/bin> time exprcount 10000 20.43sec 1.62usr 12.98sys (71.48% cpu) --- But 'top' never shows over 20% usage , vs. function f { i=10000000;while ((i--));do :; done ;} time f 31.73sec 29.25usr 2.41sys (99.76% cpu) and top shows 100% cpu usage for 'f' i.e. My system seems to include scheduling time (or a large part of it) as part of the 'time' figures. Note.. you said your loop took 2 seconds on your 3.2GHz sys. My system was idling at 1.6GHz nearly the whole test. It's your kernel settings that are causing issue.