


通过上边的图我看可以知道C++在时间和空间上对Python、Perl、PHP有着绝对压倒性的优势,但是相对的编码量较高。同java比只有内存使用上的优势。但是我们这篇主要是针对Shell的,但是,又是但是,debian官网没有把shell脚本纳入效率比较的统计范围啊!!!还是但是,我们知道Python、Perl、PHP都是号称对Shell在效率方面有着明显的优势,所以你如果不满意你通过以上提供的种种优化途径后的Shell脚本程序的话,那你就可以尝试换一种语言了。
但是我们往往不那么容易舍弃这么好用方便而且简单的处理数据方式,也可以有个折中的方法,你先用time测试各个Shell脚本命令的耗时,针对特别耗时,特别让人不能忍受的命令的效率使用C++程序处理,让你的Shell脚本来调用这个针对局部数据处理的C++程序,这样折中貌似还是能让人接受吧?
四、最后说一下这篇是不敢称为全面或者详解的文章,是我对这一段Shell学习和实践的一些心得,希望能有高手指点。也希望能帮到新踏入这一领域的新同学。以后有新的心得再添加吧。
感谢这篇文章的作者的博文指点。
2012-02-22 ps:循环检测后台命令是否结束的判断修改:解决方法暂时有两个(具体没有解释,不太清楚原因):
1、
sleep 8 &
sleep 16 &
while true
do
echo `jobs -p | wc -l`
jobs -l >> res
sleep 4
done
2、 检查剩余个数的语句改成 jobs -l |grep -v “Done”|wc -l
第一个方案的解决是多执行一次jobs,可以解释成为了消除最后的Done结果,但是这种解释也是行不通的,因为循环是一直执行的,在echo里已经执行很多次jobs了,何止一次。
第二个方案是过滤掉jobs最后的输出结果Done这条语句。算是绕过问题得到了期待的结果。
个人感觉bash解释器优化掉了没有后台命令执行的jobs查询命令,如果是优化掉了那也应该有个空的返回,wc依然可以得到0的结果啊。所以这个问题找不到具体原因,如果你知道请告诉我,非常感谢。。。 这里先感谢just do shell群里的Eric 沉默的土匪 GS 三人,非常感谢你们的帮助。










