我使用了while循环来处理任务,它从一个大约有1000万行的文件中读取记录。
我发现随着时间的推移,处理速度变得越来越慢。
我做了一个含有100万行的模拟脚本,发现了问题所在。
但我仍不知道为什么,read命令是如何工作的?
终端输出时间间隔:
seq 1000000 > seq.dat
while read s;
do
if [ `expr $s % 50000` -eq 0 ];then
echo -n $( expr `date +%s` - $A) ' ';
A=`date +%s`;
fi
done < seq.dat
终端输出时间间隔:
98 98 98 98 98 97 98 97 98 101 106 112 121 121 127 132 135 134
大约在50000行时,处理速度明显变慢。
$s
可以帮助可视化问题。看起来你对测试很了解,但我还是要问一下显而易见的问题:1. 是否有其他进程可能会争夺资源?2. 你是否多次运行并得到相同的结果?我会在我的环境中尝试一下,如果我得到不同的结果,我会提供我的输入。祝你好运。 - shellter