例によってどーでもいい速度の話ですが、Ruby の Bignum の乗算を Karatsuba 法で高速化しました (ruby-dev:37392) 。これで Python より一歩進んだ気がします。
今年の初めに書いた多倍長整数演算の速度比較の実験をやり直してみました。詳細はそっちをみてね。使用した処理系のバージョンはそれぞれ以下のとおり。
実験 1: 5 の累乗の計算
5 の 30,000 乗、100,000 乗、300,000 乗、1,000,000 乗の計算にかかる時間。単位は秒。
30000 | 100000 | 300000 | 1000000 | |
---|---|---|---|---|
ruby | 0.02 | 0.08 | 0.37 | 1.69 |
python | 0.04 | 0.11 | 0.32 | 1.76 |
perl(bigint) | 4.88 | 44.19 | N/A | N/A |
perl(GMP) | 0.06 | 0.05 | 0.04 | 0.23 |
実験 2: 5 の累乗の表示
実験 1 の数字を 10 進表示するのにかかる時間。
30000 | 100000 | 300000 | 1000000 | |
---|---|---|---|---|
ruby | 0.09 | 0.05 | 4.05 | 42.88 |
python | 0.38 | 3.16 | 28.92 | N/A |
perl(bigint) | 0.73 | 4.24 | N/A | N/A |
perl(GMP) | 0.02 | 0.02 | 0.02 | 0.80 |