Pythonをはじめてみる(2)

多倍長整数

PythonPerlのbigintよりかなり速いらしい。Perlもモジュールをインストールすれば速いらしいが、めんどうなのでやらない。
320000を計算してみる。


# Perl
use bigint;

my $t0 = time;
my $N = 20000;
my $a = 1;
for(my $i = 0; $i < $N; $i++) {
$a *= 3;
}
print $a, "\n";
print (time - $t0), "sec\n";


# Python
import time;

start = time.clock();
N = 20000;
a = 1;
i = 0;
while(i < N):
a *= 3;
i += 1;

end = time.clock();
print end - start;
print a;
end = time.clock();
print end - start;

「;」はついつい付けてしまうが、これからは付けないようにしたいと思う。


特徴的なのは回しているところ。Cのようなforの使い方できないらしい。Perlの、


for my $i(1..20000) {
...
}

に似たことはできるようだが、これは巨大なリストを作っているので、あまり好ましくない。なので、whileで代用している。
それから、ブロックは中括弧ではなく「:」ではじまって字下げする。字下げが終わったらブロックも終わり。


かかった時間は、Perlが14秒、Pythonは出力を含めて0.21秒、出力をいれないと0.11秒で、計算部分ではPythonのほうが100倍以上速いという結果になった。