【发布时间】:2017-09-14 02:11:48
【问题描述】:
在制作多语言 makefile(启动数千个进程)时,我注意到脚本语言在启动性能方面差异很大。
重击
$ TIMEFORMAT='%3R'; time bash -c "echo 'hello world'" > /dev/null
0.002
AWK
$ TIMEFORMAT='%3R'; time awk "BEGIN { print \"hello world\" }" > /dev/null
0.002
Perl
$ TIMEFORMAT='%3R'; time perl -e "print \"hello world\n\"" > /dev/null
0.003
所有这些都基本相同。但是这些脚本语言中的每一个都慢了一个数量级(!)。
Python
$ TIMEFORMAT='%3R'; time python -c "print 'hello world'" > /dev/null
0.023
红宝石
$ TIMEFORMAT='%3R'; time ruby -e "puts 'hello world'" > /dev/null
0.024
Node.js
$ TIMEFORMAT='%3R'; time node -e "console.log('hello world')" > /dev/null
0.082
Python、Ruby 和 Node.js 做了哪些事情来使它们比等效的 Bash、AWK 和 Perl 程序慢得多?是事情的结果如此,还是他们的设计有一些更基本的东西让他们有更多的开销?
【问题讨论】:
-
Ruby 加载 gems,试试
ruby --disable-gems -e "..."