В источнике всё описано достаточно подробно, поэтому я просто выложу результаты тестов, они говорят сами за себя:
$ time for ((i=0; i<10000; i++)); do /bin/sleep 0.0001; done
real 0m43.498s
user 0m2.904s
sys 0m10.809s
$ time for ((i=0; i<10000; i++)); do read -t 0.0001; done
real 0m9.148s
user 0m0.392s
sys 0m2.808s
real 0m43.498s
user 0m2.904s
sys 0m10.809s
$ time for ((i=0; i<10000; i++)); do read -t 0.0001; done
real 0m9.148s
user 0m0.392s
sys 0m2.808s
PS. Конечно, есть и builtin sleep
, но редко бывает разрешён по умолчанию. Да и работает, согласно источнику, всё равно медленнее (хоть и не намного).