在製作多語言生成文件(啓動數千個進程)時,我注意到腳本語言的啓動性能差異很大。爲什麼Python,Ruby和Node.js比Bash,AWK,Perl慢得多?
猛砸
$ 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 --disable-gems -e「...」' – Stefan