C、go、python、java、php和node.js 簡單循環累加運算速度測試[測試demo僅供參考]

以前簡單作了一下node.js和python的「hello ***」的頁面測試,也作了循環的測試,本次主要是增長了java的語言,go語言。主要是想看一下主流四種腳本的速度java、python、php、c語言。均使用for循環進行簡單的累加測試。我的技能有限因此只作了簡單測試作參考。php

實驗環境使用linux 64位服務器,操做系統爲contos 5.4,php版本5.1.6,python版本爲2.6.6,node.js版本爲0.4.12,java版本爲1.6.0_03,gcc 版本 4.1.2 2008070,go語言爲1.0.2。
1、腳本編寫
php腳本
# cat test.phphtml

 

1java

2node

3python

4linux

5服務器

6框架

7函數

<?學習

$m=0;

for (;$i<10000000;$i++){

$m=$m+$i;

}

echo $m;

?>

python腳本
# cat test.py

 

1

2

3

4

5

6

7

8

9

10

#!/bin/env python

#-*- coding:utf-8 -*-

def main():

    j = 0;

    for i in xrange(10000000):

        j=j+i

    print j

 

if __name__=="__main__":

    main()

node.js腳本
# cat test.js

 

1

2

3

4

5

var j=0;

for (i = 0; i < 10000000; i++ ) {

   j=j+i

}

    console.log(j);

 

Java代碼:
# cat Test.java

 

1

2

3

4

5

6

7

8

9

public class Test {

public static void main(String[] args) {

          long n = 0;

          for (int i = 0; i < 10000; i++) {

               n=n+i;

          }

          System.out.println(n);

     }

}

C語言,使用gcc編譯,編譯兩種結果,一種是直接編譯的,一種是優化編譯的。

 

1

2

3

4

5

6

7

8

9

#include <stdio.h>

#include <math.h>

main()

{

    long i,j=0;

    for (i=0 ; i<10000000 ; i++)

       j=j+i;

    printf("%ld\n",j);

}

go語言代碼

 

1

2

3

4

5

6

7

8

9

10

11

12

; html-script: false ]package main

 

import "fmt"

 

func main() {

    var sum,i int64

    sum=0

    for i=0;i<10000000;i++{

        sum+=i

    }

    fmt.Printf("%d",sum)

}

2、運行結果
使用time命令對程序運行時間進行統計

如下是循環一千萬次的累加測試結果。

參數 C語言直接編譯 C語言優化編譯 go Node.js Python PHP Java
Real 0.024s 0.001s 0.011s 0.420s 1.055s 1.429s 0.087
User 0.023s 0.000s 0.011s 0.401s 1.046s 1.423s 0.067
sys 0.001s 0.001s 0.000s 0.019s 0.009s 0.007s 0.015

如下是循環一萬次的累加測試結果

參數 C語言直接編譯 C語言優化編譯 go Node.js Python PHP Java
Real 0.001s 0.001s 0.004s 0.090s 0.027s 0.014s 0.087
User 0.000s 0.001s 0.003s 0.080s 0.022s 0.007s 0.041
sys 0.001s 0.000s 0.002s 0.010s 0.006s 0.007s 0.017

3、結論
從簡單的測試來看,c語言不是通常的快,大數據計算狀況下node.js速度最快,java次之,python和php比慢。可是若是是少許計算時php效果仍是很不錯。可是實際應用中,還須要調用各類函數和各方面的資源,並不能以一個空框架下的for來判斷。go的速度與C至關,可是編譯速度仍是比C要慢一點,以上的代碼C編譯完只有6K多,go編譯完有1.3M。每種語言都會有本身擅長的一方面,速度快與慢,還與編寫的技巧性有關。學好每一步,認認真真踏實的作就行了。

注:C、go和java被編譯後會對代碼進行優化。各自不一樣的編譯器優化的側重也不同,因此這個測試有些失實。好比即便循環數再大java時間也不會有改變,估計是在編譯時已經將for裏的值計算完畢,運行時直接取結果。有興趣的能夠學習編譯原理。

相關文章
相關標籤/搜索