一个简单的测试脚本,在这里:Bash一边读LINE一边比较猫慢,为什么?
while read LINE; do
LINECOUNT=$(($LINECOUNT+1))
if [[ $(($LINECOUNT % 1000)) -eq 0 ]]; then echo $LINECOUNT; fi
done
当我做cat my450klinefile.txt | myscript
的CPU锁定了100%,它可以处理约1000行第二。大约5分钟时间处理cat my450klinefile.txt >/dev/null
在半秒钟内完成的事情。
有没有更有效的方式做到这一点。我只需要从stdin读取一行,计算字节数,然后将它写出到命名管道。但即使这个例子的速度是不可能的缓慢。每个1Gb的输入行我需要做一些更复杂的脚本操作(关闭并打开一些数据正在馈送的管道)。
除了bash脚本和编译工具之间的区别之外(请参阅paxdiablo的答案),您的比较不公平:cat只是在您的脚本执行一些计算时进行读取(行计数) – Matteo
替换LINECOUNT = $(($ LINECOUNT + 1))''用'((LINECOUNT ++))' –
也为了实际比较,您需要从脚本中删除条件,现在您的问题如下所示:'当我试图运输20tonns木材,当我运行它没有拖车它使用十倍以下!' –