13
回答
各语言的性能比较,为什么python差那么多
终于搞明白,存储TCO原来是这样算的>>>   

 求1000000之内的素数,python比js,java,go为什么差那么多?

还有,这样的性能比较方法合适吗?

共有13个答案 最后回答: 1年前
这是因为你写 Python 的方式不对
import time
import math

def isprime(num):
    top = int(math.sqrt(num)) + 1
    return all(num % i for i in xrange(2, top))

beginTime = time.time() * 1000
for i in xrange(2, 1000000):
    isprime(i)
endTime = time.time() * 1000
print endTime - beginTime, "(ms)"

在我的电脑上,运行时间:5688.51196289 (ms)

用PyPy的话,运行时间:1186.68798828 (ms)

--- 共有 2 条评论 ---
zlsun回复 @yinhaixiang : 多谢提醒,我写少了+1,代码已修正 2年前 回复
yinhaixiang你的算法有问题,isprime(4)就不对,后面还有几个数字也不对 2年前 回复
Java的JIT优化了那么多年,比Go生成的本地程序还要快可以理解。我进行的对10个升序的数进行1亿次冒泡降序排序,Java耗时接近GCC -O优化的本地程序,虽然内存占用更大。

Node.JS有V8这种高效成熟的JIT编辑器,虽然比不上Java HotSpot JIT,但轻松就能秒其他没有JIT脚本几条街。

不过Python的性能真的不怎么样,1亿次累加求和,PHP7耗时1.855秒,PHP5耗时3.855秒,而Python2.7则耗时9.460秒,是PHP7耗时的5倍。
怎么没有最好的语言php的运行时间,这明显不科学
--- 共有 1 条评论 ---
eechenhttp://my.oschina.net/eechen/blog/406309 PHP5比Python快,PHP7比Python快得多。 2年前 回复

http://benchmarksgame.alioth.debian.org/u64q/php.html

php vs py3 綜合評測

binary-trees  php 605.71秒  py3 129.60秒

k-nucleotide php 37.5秒     py3 73.07秒

<?php
function isprime($num) {
    $count = (int)sqrt($num);
    while ($count > 1) {
        if ($num % $count == 0) {
            return false;
        }
        $count--;
    }
    return true;
}
$starttime = microtime(true);
for ($i = 2; $i < 1000000; $i++) {
    isprime($i);
}
echo microtime(true) - $starttime ."\n";

在Ubuntu14.04,i5-3230M上,Node耗时1645ms,PHP7耗时9875ms,是Node的6倍.如果以后Zend-JIT引入到Opcache,PHP的计算速度应该就能更加接近Node V8了,bench.php计算测试中,现阶段的Zend-JIT能为PHP带来5倍以上的速度提升.

JIT能明显优化函数,循环,压力测力中JIT优势明显,但不代表实际Web应用的吞吐量:
Node.JS vs PHP CLI Server 简单的HTTP服务器性能测试
http://my.oschina.net/eechen/blog/369470
这有点不对了,拿python去比性能? 干脆拿c语言去比谁开发界面速度更快。哈。
--- 共有 1 条评论 ---
yinhaixiang按你的意思是,那python适合做什么呢,性能比不过其他,开发速度又比不过node.js, php... 2年前 回复

我就不明白了。 天天比来比去有啥意义么。。

擅长的东西都不一样。 

--- 共有 2 条评论 ---
渔樵耕读回复 @yinhaixiang : 爬虫、webapp、服务器脚本。 样样都行,做人不能太绝对, 做技术也是。一直存在那么多年一定是有他存在的道理。 2年前 回复
yinhaixiang那请问python适合做什么呢,性能比不过其他语言,开发速度又比不过node.js, php... 2年前 回复
顶部