実行速度

月曜日, 1月 10th, 2011 by

Pythonは速いとの記述を見かけたので他の言語との性能比較をしてみました。
測定に用いたプログラムは、1~10,000,000までの総和を求めるというシンプルなものです。
非常に簡易的な測定なので、結果を鵜呑みにしないようご注意ください。

測定に用いた環境は以下の通り。

ベンチマーク環境

ベンチマーク環境

Python2.5

ループ1000万回で実行時間が1.632秒
ループ1回の所要時間は163.2nsです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> def count(n):
...   i = 0
...   sum = 0
...   while i < n:
...     i = i + 1
...     sum = sum + i
...   return sum
...
>>> profile.run('count(10000000)')
         4 function calls in 1.632 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        1    1.632    1.632    1.632    1.632 <stdin>:1(count)
        1    0.000    0.000    1.632    1.632 <string>:1(<module>)
        1    0.000    0.000    1.632    1.632 profile:0(count(10000000))
        0    0.000             0.000          profile:0(profiler)

PHP 5.3.1

xamppでインストールした環境で、オプティマイザー類は何もいれていません。
ループ10000000回で実行時間は0.927秒
ループ1回の所要時間は92.7nsです。

あれっ、Pythonより速いですね。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$time = microtime(true);
sum(10000000);
echo microtime(true) - $time;

function sum($n){
  $sum = 0;
  for($i = 0; $i <= $n; $i++)$sum+=$i;
  return $sum;
}

結果
0.92703986167908

JavaScript on Chrome8

ループ1000万回で実行時間は0.195秒。
ループ1回あたりの所要時間は19.5nsです。

JavaScriptってもっと遅いものだと思ってました。Chromeすごいですね。
IE9で測定すると0.25秒前後、Firefox3.6で測定すると0.05秒程度でした。
まっ、ソースコードが単純すぎるのであまり参考にはなりませんが、JavaScript、意外と速いですね。

1
2
3
4
5
6
7
8
9
10
11
<script>
n = 10000000
sum = 0;
var start = new Date();
for(i = 0; i < n; i++){
  sum += i;
}
var end = new Date();
var span = end-start;
alert(span)
</script>

まとめ

Pythonそんなに速くない。けど、致命的な遅さではないはず。きっと。

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single