对自己感到非常满意,我重写了bash睡眠排序,不是一秒钟,而是不到第二天。
#!/bin/bash
function f() {
#sleep miliseconds!
sleepytime=$(echo "scale=6;$1/1000" | bc)
sleep $sleepytime
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
现在,这很有效。
$time ./fast_sleepsort.sh 10 20 5 4
4
5
10
20
real 0m0.047s
user 0m0.018s
sys 0m0.035s
但一切都不顺利。
$ ./fast_sleepsort.sh 10 20 5 4 4 3 3 3
5
4
4
3
3
3
10
20
显然没有排序。
什么是SleepSort问题的这个修改版本,它是否让我们深入了解SleepSort的硬件依赖性?
答案 0 :(得分:1)
在后台启动进程需要一些时间。 3毫秒太短,启动过程和转移(以及同时在您的机器上发生的任何事情)需要更多。请尝试使用$1/100
。