python vs pypy vs nodejs

早听闻google的js V8引擎效率惊人,以至于很多人打算用nodejs统管前端、后端,网页端、移动端。V8引擎据说主要有两方面的优化,一个是运用JIT (just in time compiler),即所谓的运行时编译执行的技术,将js代码转换成二进制程序,而非字节码,所以循环执行效率奇佳;另一个是将对象里的map数据结构全改成偏移量索引结构,所以对象中的元素寻址会快很多。

简单测试了一把,结果还真是惊人,同样是使用了JIT的pypy也比nodejs逊色很多,具体如下:

python代码为:

def fibonacci(n):
    if n < 2:
        return 1
    return fibonacci(n - 2) + fibonacci(n - 1)

print fibonacci(40)

javascript代码为:

function fibonacci(n) {
    if (n < 2) {
        return 1;
    }   
    return fibonacci(n - 2) + fibonacci(n - 1); 
}

console.log(fibonacci(40));

php代码为:

<?php
function fibonacci($n) {
    if ($n < 2)
        return 1;
    return fibonacci($n - 2) + fibonacci($n - 1);
}

echo fibonacci(40);
echo "\n";

耗时统计如下:

//python
real    0m34.622s
user    0m34.429s
sys     0m0.113s

//pypy
real	0m11.098s
user	0m7.750s
sys	0m3.320s

//nodejs
real    0m1.432s
user    0m1.413s
sys     0m0.015s

//php
real    0m50.005s
user    0m48.865s
sys     0m0.228s

一时间有人决定前后端都改用nodejs,这样写页面的程序员也能写后端服务代码了。我表示这绝对不是一个好想法,一方面nodejs自己也有一些局限性,比如单纯程,比如编程的逻辑思维习惯问题,另一方面其他语言,像PHP、python、Java在服务端深耕多年,扩展和框架非常丰富,相比于nodejs要完善得多。当然个人非常看好React-native这类js库在移动端的使用。

发表于 2015年12月01日 13:17   评论:0   阅读:2450  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo