在制作一个polyglot makefile (启动数千个进程)时,我注意到脚本语言在启动性能上有很大的差异。
Bash
$ TIMEFORMAT='%3R'; time bash -c "echo 'hello world'" > /dev/null
0.002AWK
$ TIMEFORMAT='%3R'; time awk "BEGIN { print \"hello world\" }" > /dev/null
0.002Perl
$ 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.024Node.js
$ TIMEFORMAT='%3R'; time node -e "console.log('hello world')" > /dev/null
0.082Python、Ruby和Node.js做了哪些事情来使它们比等价的Bash、AWK和Perl程序慢得多?是事情的发展方式,还是他们的设计有更基本的东西,使他们有如此多的开销?
发布于 2017-09-14 02:31:03
在你的例子中,你实际上只是在衡量它们的开始花费了多少。所以,那些最慢的3是最慢的,因为他们的口译员在开始时做的更多,但这不一定意味着在长时间运行的程序中他们会慢一些。
您可以编写一些长时间运行的示例(在其中您进行了数千次计算),然后您可以看到哪一个在长期运行中是最慢的。
请记住,每个文件都用于不同的事情,因此其中一个处理文件(awk)的速度很可能非常快,而其他的则会非常快地同时处理10s的事情(Node.js)。
https://stackoverflow.com/questions/46209434
复制相似问题