Pau*_*per 0 ruby python node.js
在制作多语言 makefile(启动数千个进程)时,我注意到脚本语言的启动性能差异很大。
重击
$ TIMEFORMAT='%3R'; time bash -c "echo 'hello world'" > /dev/null
0.002
Run Code Online (Sandbox Code Playgroud)
AWK
$ TIMEFORMAT='%3R'; time awk "BEGIN { print \"hello world\" }" > /dev/null
0.002
Run Code Online (Sandbox Code Playgroud)
珀尔
$ TIMEFORMAT='%3R'; time perl -e "print \"hello world\n\"" > /dev/null
0.003
Run Code Online (Sandbox Code Playgroud)
所有这些本质上是相同的。但是这些脚本语言中的每一种都慢了一个数量级(!)。
Python
$ TIMEFORMAT='%3R'; time python -c "print 'hello world'" > /dev/null
0.023
Run Code Online (Sandbox Code Playgroud)
红宝石
$ TIMEFORMAT='%3R'; time ruby -e "puts 'hello world'" > /dev/null
0.024
Run Code Online (Sandbox Code Playgroud)
节点.js
$ TIMEFORMAT='%3R'; time node -e "console.log('hello world')" > /dev/null
0.082
Run Code Online (Sandbox Code Playgroud)
Python、Ruby 和 Node.js 做了哪些事情使它们比等效的 Bash、AWK 和 Perl 程序慢得多?是否只是事情的结果,或者他们的设计中有什么更基本的东西使他们有更多的开销?
在您的示例中,您实际上只是在衡量他们需要多少才能开始。因此,那些最慢的 3 是最慢的,因为它们的解释器在开始时做得更多,但这不一定意味着在长时间运行的程序中它们会更慢。
您可以编写一些长时间运行的示例(在其中进行数千次计算),然后您可以看到从长远来看哪个实际上是最慢的。
请记住,其中的每一个都用于不同的事情,因此其中一个处理文件的速度可能非常快 ( awk
),而其他的处理文件 ( ) 的速度可能非常快 ( Node.js
)。