您的位置 首页 golang

2017年的golang、Python、PHP、C++、C、Java、Nodej

本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至

于怎么比,还是不得不用神奇的斐波那契算法。可能是比较常用或好玩吧。

好了,talk is cheap, show me your code! 打开Mac,点开Clion开始Coding吧!

1.怎么第一是Go呢,因为我个人最近正在用,感觉很不错

package main

import “fmt”

func main(){

fmt.Println(fibonacci(34))

}

func fibonacci(i int) int{

if(i<2){

return i;

}

return fibonacci(i-2) + fibonacci(i-1);

}

先用 Go1.7看看:

qiang@ localhost :/works/learnCPP$ go version && time go build fib.go && time ./fib

go version go1.7.5 darwin/amd64

real 0m0.206s

user 0m0.165s

sys 0m0.059s

real 0m0.052s

user 0m0.045s

sys 0m0.004s

然后,再看看1.8的:

qiang@localhost:/works/learnCPP$ go18 version && time go18 build fib.go && time ./fib go version go1.8 darwin/amd64

real 0m0.204s

user 0m0.153s

sys 0m0.062s

real 0m0.051s

user 0m0.045s

sys 0m0.003s

感觉看不出差异,但官方1.8在GC、Compile等方面优化提升了20%,可能是这demo太简单了吧。

2. Python ,最近玩得也火热,所以拿来比比

def fibonacci(i):

if i<2:

return i

return fibonacci(i-2) + fibonacci(i-1)

print(fibonacci(34))

先来看看python2.7

qiang@localhost:/works/learnCPP$ python2 -V && time python2 ./fib.py

Python 2.7.13 real

0m2.651s

user 0m2.594s

sys 0m0.027s

接着是Py 3.5

qiang@localhost:/works/learnCPP$ python3 -V && time python3 ./fib.py Python 3.5.1

real 0m3.110s

user 0m2.982s

sys 0m0.026s

一眼就看出Py最大的问题了:越升级越慢, 而且要命的是很多语法不兼容,但平时写写算法、小程序还不错,其它的时候,就算了,还是用Go吧。

3.PHP嘛,我工作用的多,所以也必须比较下

<?php

function fibonacci($i){

if($i<2) return $i;

return fibonacci($i-2) + fibonacci($i-1);

}

echo fibonacci(34);

由于我的工作主要用的php5.4,所以先来波:

qiang@localhost:/works/learnCPP$ php54 -v && time php54 fib.php

PHP 5.4.43 (cli) (built: Dec 21 2016 12:01:59)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

real 0m2.288s

user 0m2.248s

sys 0m0.021s

测试环境是5.6,所以也来波:

qiang@localhost:/works/learnCPP$ php -v && time php fib.php

PHP 5.6.28 (cli) (built: Dec 6 2016 12:38:54)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

real 0m2.307s

user 0m2.278s

sys 0m0.017s

新项目、自己玩什么的都是php7, 请看:

qiang@localhost:/works/learnCPP$ php -v && time php fib.php

PHP 5.6.28 (cli) (built: Dec 6 2016 12:38:54)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

real 0m2.307s

user 0m2.278s

sys 0m0.017s

感觉php7和5是天壤之别,完全不是一个东西,而且进步提升太大了,在此依赖鸟哥点个赞!建议大家多用php7.

4.C++是我最爱的理论基础,当然说的是C++11/14,不是老古董c99等

# include <iostream>

constexpr int fibonacci(const int i){

if(i<2) return i;

return fibonacci(i-2) + fibonacci(i-1);

}

int main() {

fibonacci(34);

return 0;

}

先用g++ 6.2 无优化看看:

qiang@localhost:/works/learnCPP

$ time g++-6 -o a.bin main.cpp && time ./a.bin real 0m0.378s

user 0m0.254s

sys 0m0.104s

real 0m0.050s

user 0m0.043s

sys 0m0.002s

加优化-O2后,

qiang@localhost:/works/learnCPP

$ time g++-6 -O2 -o a.bin main.cpp && time ./a.bin

real 0m0.874s

user 0m0.344s

sys 0m0.180s

real 0m0.034s

user 0m0.019s

sys 0m0.004s

效果还是很明显的, 运行时间只有前者一半。

5. C也写了个

#include <stdio.h>

int fibonacci(int i){

if(i<2) return i;

return fibonacci(i-2) + fibonacci(i-1);

}

int main(){

printf(“%d”,fibonacci(34));

}

不加优化:

#include <stdio.h>

qiang@localhost:/works/learnCPP

$ time gcc-6 -o c.bin fib.c && time ./c.bin

real 0m0.341s

user 0m0.063s

sys 0m0.101s

real 0m0.049s

user 0m0.044s

sys 0m0.002s

加-O2优化:

qiang@localhost:/works/learnCPP

$ time gcc-6 -O2 -o c.bin fib.c && time ./c.bin

real 0m0.143s

user 0m0.065s

sys 0m0.034s

real 0m0.034s

user 0m0.028s

sys 0m0.002s

和C++14一样, 优化后提速明显,快了一倍。

6. java

clas Fib{

public static void main(String[] args){

System.out.println(fibonacci(34));

}

static int fibonacci( int i){

if(i<2) return i;

return fibonacci(i-2) + fibonacci(i-1);

}

}

编译、运行的结果是:

qiang@localhost:/works/learnCPP

$ java -version && time javac Fib.java && time java Fib

java version “1.8.0_25”

Java(TM) SE Runtime Environment (build 1.8.0_25-b17)

Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

real 0m0.952s

user 0m1.302s

sys 0m0.144s

real 0m0.150s

user 0m0.123s

sys 0m0.025s

性能还行, Compile时间和c++/go比就太low了。

7.最后出场的当然是一直大紫大红的JavaScript,不,准确说是Nodejs(这玩意和java真tmd没半毛钱关系)

qiang@localhost:/works/learnCPP

$ java -version && time javac Fib.java && time java Fib

function fibonacci(i){

if(i<2) return i;

return fibonacci(i-2) + fibonacci(i-1);

}

console.log(fibonacci(34))

结果:

qiang@localhost:/works/learnCPP$ node -v && time node fib.js

v6.10.0

real 0m0.332s

user 0m0.161s

sys 0m0.062s

结果还是令人震惊的,竟然只有TMD 0.3s,一共也不到0.5s,几乎接近java了, 但这代码量、维护性的优势还真得多感谢Google爹、Chromium爹的V8儿子以及开源社区。

如果Nodejs真的运行得稳定了, 不准真能一统“程序江湖”, 当然我只是说说,不要太认真。

来张图中吧:

总结:

感觉每种language都不同用途,性能只是一个很单一的指标,我本人比较看重的是:可阅读性、可维护性、可移植性、健壮性、扩展性,然后是性能。 而且现代硬件越来越牛逼,动不动手机就8个G,cpu赶上5年前的PC的cpu了,ssd普及化…。 本人比较看好Golang/php/python,也关注现代的C++,如14、17, 至于rust、swift、java、scala就算了,这主要和个人的需要、公司技术栈相关。哈哈! 先写这么多吧!

免责声明:转载自网络 不用于商业宣传 版权归原作者所有 侵权删

文章来源:智云一二三科技

文章标题:2017年的golang、Python、PHP、C++、C、Java、Nodej

文章地址:https://www.zhihuclub.com/88531.shtml

关于作者: 智云科技

热门文章

评论已关闭

2条评论

  1. If you desire to take a good deal from this post then you
    have to apply these techniques to your won website.

  2. Hi there very cool web site!! Guy .. Beautiful ..
    Wonderful .. I’ll bookmark your web site and
    take the feeds also? I am happy to seek out a lot of
    helpful info here in the post, we want develop more strategies on this regard,
    thank you for sharing. . . . . .

网站地图