剛好跟lloyd大大聊到node.js V8的效能. 試寫了幾行發現速度還真是非常的快.
隨手用四種語言寫個forloop. 時間消耗依序是這樣的 Go < node.js < PHP < Python
其中 node.js 直譯器的需要編譯時間最長. 所以如果loop的max=100時.
其時間消耗變成這樣 Go < PHP < Python < node.js
這個實驗告訴我們 benchmark 是可以做到人人都滿意的。:P
package main
func main() {
max := 1000000000
var a,b,c int
for i:=0;i<max;i++ {
a = 1234 + 5678 + i
b = 1234 * 5678 + i
c = 1234 / 2 + i
}
_=a+b+c
}
var i, a, b, c, max;
max = 1000000000;
for (i = 0; i < max; i++) {
a = 1234 + 5678 + i;
b = 1234 * 5678 + i;
c = 1234 / 2 + i;
}
<?
$max = 10000000;
for ($i = 0; $i < $max; $i++) {
$a = 1234 + 5678 + $i;
$b = 1234 * 5678 + $i;
$c = 1234 / 2 + $i;
}
?>
max = 10000000;
for i in range(max):
a = 1234 + 5678 + i
b = 1234 * 5678 + i
c = 1234 / 2 + i
仔細看code. Go & node.js 的for loop都比PHP & Python大了100倍.
因為nodejs的效能好到不能跟後兩者放在同一個量級比賽. 所以加了100倍之後拿來跟Go比.
在這邊Go很明顯多做一些事, 那是因為Go不能宣告了變數又不用.
time ./b;time node b.js;time php b.php; time python3 b.py real 0m1.422s user 0m1.417s sys 0m0.004s real 0m2.941s user 0m2.967s sys 0m0.018s real 0m2.901s user 0m2.875s sys 0m0.025s real 0m4.769s user 0m4.746s sys 0m0.022s
嘿嘿.
至於Go如果做假宣告的話那會是這樣.
package main
func main() {
max := 1000000000
for i:=0;i<max;i++ {
_ = 1234 + 5678 + i
_ = 1234 * 5678 + i
_ = 1234 / 2 + i
}
}
real 0m0.944s user 0m0.938s sys 0m0.005s
The post Go vs node.js vs PHP vs Python, Loop benchmark. appeared first on Kevinwatt's Blog.
















