pypy的速度

来源:互联网 发布:把mac照片导入iphone8 编辑:程序博客网 时间:2024/04/30 11:32

无聊作PE http://projecteuler.net/problem=10 , 求2百万以下数的所有数的总和

python 随便写了一个

big = 2000000import timeplst = [2, 3, 5, 7, 11, 13]t1 = time.time()for i in xrange(17, big, 2):    for p in plst:        if i%p == 0:            break        if p*p > i:            plst.append(i)            breakprint time.time() - t1#print len(plst)print sum(plst) 

然后

$ python peuler10.py 12.4184100628142913828922

太慢了,不能忍受,用C试了下:

#include <stdio.h>#include <time.h>int main(void){    clock_t begin, end;    unsigned long big = 2000000;    unsigned long pl[150000] = {2,3,5,7,11,13};    unsigned long i = 0;    unsigned int max = 6;    begin = clock();    for(i=17;i<big;i+=2){        int j = 0;        while(1){            if(i%pl[j] == 0)                break;            if(pl[j] * pl[j] > i){                pl[max] = i;                max += 1;                break;            }            j += 1;        }    }    big = 0;    for(i=0; i < max; i++){        big += pl[i];    }    end = clock();    double cost = (double)(end - begin)/CLOCKS_PER_SEC;    printf("%ld\n", big);    printf("%lf seconds\n", cost);}

$ ./a1429138289220.750000 seconds

这差距实在是太大了, 又祭起pypy试试:

$ pypy peuler10.py -0jit0.665678977966142913828922

竟然比C还快。

pypy是python的一线希望,就是那些扩展不知道怎么办。好像很多脚本语言都有如是困境, PHP有最近facebook搞出的HipHop解释器,js因为V8现在势头正猛,不过都还有一定差距。还是更看好go,go也比较合我口味。

原创粉丝点击