C、go、python、java、php和node.js 简单循环累加运算速度测试[测试demo仅供参考]

之前简单做了一下node.js和python的“hello ***”的页面测试,也做了循环的测试,本次主要是增加了java的语言,go语言。主要是想看一下主流四种脚本的速度java、python、php、c语言。均使用for循环进行简单的累加测试。个人技能有限所以只做了简单测试做参考。

实验环境使用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。
一、脚本编写
php脚本
# cat test.php

 

1

2

3

4

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)

}

二、运行结果
使用time命令对程序运行时间进行统计

以下是循环一千万次的累加测试结果。

参数C语言直接编译C语言优化编译goNode.jsPythonPHPJava
Real0.024s0.001s0.011s0.420s1.055s1.429s0.087
User0.023s0.000s0.011s0.401s1.046s1.423s0.067
sys0.001s0.001s0.000s0.019s0.009s0.007s0.015

以下是循环一万次的累加测试结果

参数C语言直接编译C语言优化编译goNode.jsPythonPHPJava
Real0.001s0.001s0.004s0.090s0.027s0.014s0.087
User0.000s0.001s0.003s0.080s0.022s0.007s0.041
sys0.001s0.000s0.002s0.010s0.006s0.007s0.017

三、结论
从简单的测试来看,c语言不是一般的快,大数据计算情况下node.js速度最快,java次之,python和php比慢。但是如果是少量计算时php效果还是很不错。但是实际应用中,还需要调用各种函数和各方面的资源,并不能以一个空框架下的for来判断。go的速度与C相当,但是编译速度还是比C要慢一点,以上的代码C编译完只有6K多,go编译完有1.3M。每种语言都会有自己擅长的一方面,速度快与慢,还与编写的技巧性有关。学好每一步,认认真真踏实的做就好了。

注:C、go和java被编译后会对代码进行优化。各自不同的编译器优化的侧重也不一样,所以这个测试有些失实。比如即使循环数再大java时间也不会有改变,估计是在编译时已经将for里的值计算完毕,运行时直接取结果。有兴趣的可以学习编译原理。

转载于:https://my.oschina.net/u/3371661/blog/1569653

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值