More Related Content
Similar to Python vs ruby (8)
Python vs ruby
- 2. 環境
・Mac OS X Version10.7.4
・CPU 2.2GHz Intel Core i7
・Memory 4GB
・Python 2.7.1 vs ruby 1.9.2p290
・実行測定結果は5回実行したうち、最大値、 最
小値を取り除いた3つの値の平均を利用
・空ループの実行結果を測定し除いた
- 3. 1, i = i2 (intの代入)
Python Ruby
実行結果:0.055(s) 実行結果:0.0095(s)
1回あたり:0.055(μs) 1回あたり:0.0095(μs)
・Rubyの方がPythonより一桁速いことに違和感があるが、計測方法を確認しても特に間違いは無さそうなの
でバックエンドで何か異なる処理をしているのかもしれない。
。
- 4. 2, i = i2+i3 (intの加算)
Python Ruby
実行結果:0.11(s) 実行結果:0.015(s)
1回あたり:0.11(μs) 1回あたり:0.015(μs)
- 5. 3,i=i2/i3 (intの除算)
Python Ruby
実行結果:0.12(s) 実行結果:0.028(s)
1回あたり:0.12(μs) 1回あたり:0.028(μs)
・Pythonは乗算とほぼ同じコストに対して、Rubyは2倍近いコストになっている。
- 6. 4,i=i2%i3 (intの剰余)
Python Ruby
実行結果:0.13(s) 実行結果:0.028(s)
1回あたり:0.13(μs) 1回あたり:0.028(μs)
- 7. 5,f=f2 (floatの代入)
Python Ruby
実行結果:0.055(s) 実行結果:0.012(s)
1回あたり:0.055(μs) 1回あたり:0.012(μs)
・Pythonはintの場合と同じコストであったが、Rubyは3割増となっている。
- 8. 6,f=f2+f3 (floatの加算)
Python Ruby
実行結果:0.11(s) 実行結果:0.059(s)
1回あたり:0.11(μs) 1回あたり:0.059(μs)
・Pythonはintの場合と同じコストであったが、Rubyは4倍となっている。
- 11. 9,intからfloatへの変換
Python Ruby
実行結果:0.26(s) 実行結果:0.082(s)
1回あたり:0.26(μs) 1回あたり:0.082(μs)
- 12. 10,floatからintへの変換
Python Ruby
実行結果:0.28(s) 実行結果:0.042(s)
1回あたり:0.28(μs) 1回あたり:0.042(μs)
・Rubyはintからfloatの半分のコストとなった。
- 16. 14,listの参照(n=1,000)
Python Ruby
実行結果:0.0004(s) 実行結果:0.00005(s)
1回あたり:0.4(μs) 1回あたり:0.05(μs)
・Rubyの性能がPythonを1桁上回った。速すぎる気がする。
- 17. 15,listの参照(n=10,000)
Python Ruby
実行結果:0.018(s) 実行結果:0.0005(s)
1回あたり:1.8(μs) 1回あたり:0.05(μs)
・Rubyの1回あたりの性能がn=1000と比べて劣化していない。
- 18. 16,listの参照(n=100,000)
Python Ruby
実行結果:2.2(s) 実行結果:0.0044(s)
1回あたり:22.2(μs) 1回あたり:0.044(μs)
・Rubyの1回あたりの性能がn=1000と比べて劣化していない。Pythonは指数関数的にコストが
増加しており、listのアルゴリズムが異なることが伺える。
- 19. 17,Hashの生成(n=10,000)
Python Ruby
実行結果:0.0014(s) 実行結果:0.0033(s)
1回あたり:0.14(μs) 1回あたり:0.33(μs)
・初めてPythonがRubyの性能を上回った。
- 20. 18,Hashの参照(n=10,000)
Python Ruby
実行結果:0.0008(s) 実行結果:0.0011(s)
1回あたり:0.08(μs) 1回あたり:0.11(μs)
・PythonがRubyの性能を上回り、作成と比べた参照の性能値はどちらも同程度だった。
- 21. 19,正規表現のmatch
Python Ruby
実行結果:0.002(s) 実行結果:0.0005(s)
1回あたり:2.0(μs) 1回あたり:0.5(μs)
・RubyがPythonより一桁速い。
- 22. 20, 条件判定
Python Ruby
数字=>実行結果:0.07(s) 数字=>実行結果:0.009(s)
1回あたり:0.07(μs) 1回あたり:0.009(μs)
文字=>実行結果:0.13(s) 文字=>実行結果:0.032(s)
1回あたり:0.13(μs) 1回あたり:0.032(μs)
・RubyがPythonより一桁速い。
- 23. 21, ソート
Python Ruby
n=1000=>実行結果:0.025(s) n=1000=>実行結果:0.0067(s)
1回あたり:25(μs) 1回あたり:6.7(μs)
n=10000=>実行結果:2.44(s) n=10000=>実行結果:0.59(s)
1回あたり:244(μs) 1回あたり:59(μs)
n=100000=>実行結果:282(s) n=100000=>実行結果:58(s)
1回あたり:2820(μs) 1回あたり:580(μs)
・RubyがPythonより一桁速い。