Joh*_*nGa 7 shell perl performance benchmarking
我在Perl和shell中编写了多个脚本,并且比较了实际的执行时间.在所有情况下,Perl脚本比shell脚本快10倍以上.
所以我想知道是否有可能编写一个比Perl中的同一个脚本更快的shell脚本?为什么Perl比shell更快,尽管我在Perl脚本中使用系统函数?
有几种方法可以让你的shell(例如Bash)执行得更快.
sed,grep,awk等字符串/文本操作.command|grep|grep|cut|sed 使代码变慢.每根管子都是架空的.对于这个例子,只有一个awk可以完成它们.
command | awk '{do everything here}'
您可以使用的最接近的工具,它可以匹配Perl的某些任务的速度,例如字符串操作或数学,是awk.这是此解决方案的有趣基准.文件中有大约900万个数字产量
$ head -5 file
1
2
3
34
42
$ wc -l <file
8999987
# time perl -nle '$sum += $_ } END { print $sum' file
290980117
real 0m13.532s
user 0m11.454s
sys 0m0.624s
$ time awk '{ sum += $1 } END { print sum }' file
290980117
real 0m9.271s
user 0m7.754s
sys 0m0.415s
$ time perl -nle '$sum += $_ } END { print $sum' file
290980117
real 0m13.158s
user 0m11.537s
sys 0m0.586s
$ time awk '{ sum += $1 } END { print sum }' file
290980117
real 0m9.028s
user 0m7.627s
sys 0m0.414s
Run Code Online (Sandbox Code Playgroud)
对于每次尝试,awk都比Perl快.
最后,尝试学习awk超出他们作为一个衬里所能做的事情.
| 归档时间: |
|
| 查看次数: |
4394 次 |
| 最近记录: |