- 2017-07-26 (Wed) 10:12
- プログラミング
昨日の続きで,ループ系の計算でも比較してみた.
#include#include int main(int argc, char *argv[]) { int sum = 0; int n = 0, i, j; n = atoi(argv[1]); for(j = 0; j < 1000; j++) for(i = 0; i < n; i++) sum += i; printf("%d\n", sum); return 0; }
import sys n=int(sys.argv[1]) s=0 for j in range(0,1000): for i in range(0, n): s += i print(s)
結果:
hogehoge:~/work/pypytest$ gcc -O3 -o sumI sumI.c hogehoge:~/work/pypytest$ time ./sumI 1000000 882236160 real 0m0.255s user 0m0.252s sys 0m0.000s hogehoge:~/work/pypytest$ time pypy sumI.py 1000000 499999500000000 real 0m2.105s user 0m2.088s sys 0m0.020s
もう一回:
hogehoge:~/work/pypytest$ time ./sumI 1000000 882236160 real 0m0.155s user 0m0.152s sys 0m0.000s hogehoge:~/work/pypytest$ time pypy sumI.py 1000000 499999500000000 real 0m2.130s user 0m2.120s sys 0m0.008s
10数倍くらい? 再起しまくりのフィボナッチと同じ程度.多倍長整数の演算になっている点が響いてるかも?
ということで,double でやった時:
hogehoge:~/work/pypytest$ time ./sum 1000000 5e+14 real 0m1.159s user 0m1.156s sys 0m0.000s hogehoge:~/work/pypytest$ time pypy sum.py 1000000 4.999995e+14 real 0m3.085s user 0m3.064s sys 0m0.024s
こっちは 2~3倍程度.
ということで,Python は C の 3~10倍程度の遅さでしょう.なお,CPU は Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz で.
- Newer: AWK - はじめ