私の
記事へのコメントでは、他の言語で提供されている例のパフォーマンスをテストするように要求されました。 私がやろうとしました。
タイトルからわかるように、人気のあるほぼすべての動的言語とRubyの新しいバージョンがテストに参加しました。
結果を見てみましょう。
テストに関するいくつかの言葉。 テストでは、数値分解関数が使用されました。 最も原始的なアルゴリズムは、除算器の列挙です。 各言語で、1つのメソッドでクラスが作成されました(Perlを除く)。
その後、999999に等しい引数を使用して、ループで1000回呼び出されました。
テストが実行されたシステムはDebian Lennyです。 すべてのインタープリターは、公式リポジトリのパッケージによってインストールされます。 プロセッサー-Pentium D 2.8。
このテストには、実験ブランチ1.9のRubyインタープリターも含まれていました(リポジトリからも配信されました)。
別のコメント、言語の機能を考えると、実装したスクリプトのいくつかは最適ではないかもしれません。 すべての言語で同じアルゴリズムを実装しようとしました。 コメントや追加がある場合はコメントしてください。
テストのために、次のスクリプトが作成されました。
#!/ bin / bash
uname -a#システム情報
cat / proc / cpuinfo | grep "model name"#プロセッサ情報
#インタープリターバージョンの予備出力を使用して、自身をテストします
ルビー-v
時間ruby factor.rb
ruby1.9 -v
時間ruby1.9 factor.rb
php -v
時間php factor.php
python -V
時間python factor.py
perl -v
時間perl factor.pl
次に、このスクリプトを実行した結果を見てみましょう。
Linux debian 2.6.26-1-686#1 SMP Mon Dec 15 18:15:07 UTC 2008 i686 GNU / Linux
モデル名:Intel(R)Pentium(R)D CPU 2.80GHz
モデル名:Intel(R)Pentium(R)D CPU 2.80GHz
ruby 1.8.7(2008-08-11パッチレベル72)[i486-linux]
実際の0m1.099s
ユーザー0m1.076s
sys 0m0.000s
ruby 1.9.0(2008-06-20リビジョン17482)[i486-linux]
実数0m0.287s
ユーザー0m0.252s
sys 0m0.008s
PHP 5.2.6-0.1〜lenny1とSuhosin-Patch 0.9.6.2(cli)(ビルド:2008年11月29日21:35:12)
Copyright(c)1997-2008 The PHP Group
Zend Engine v2.2.0、著作権(c)1998-2008 Zend Technologies
実際の0m0.348s
ユーザー0m0.324s
sys 0m0.008s
Python 2.5.2
実際の0m0.537s
ユーザー0m0.536s
sys 0m0.000s
これはperl、i486-linux-gnu-thread-multi用にビルドされたv5.10.0です
Copyright 1987-2007、Larry Wall
Perlは、Artistic Licenseまたは
GNU General PublicLicense。Perl5ソースキットに含まれています。
FAQリストを含むPerlの完全なドキュメントは、次の場所にあります。
「man perl」または「perldoc perl」を使用するこのシステム。 にアクセスできる場合
インターネットでは、ブラウザでPerlホームページのhttp://www.perl.org/を指定します。
実際の0m0.569s
ユーザー0m0.552s
sys 0m0.004s
まとめると。 PythonはPerlとほぼ同等の速度です。 Ruby 1.8は当然失われます。 PHPはほぼ最速です。
そして、これは驚くべきことです。実験的なRuby 1.9ブランチが最速です。 テストにRuby 1.9を含めたことは偶然ではありません。 開発中、速度に重点が置かれました。 しかし、正直に言って、私は非常に驚いています。
だから、Rubyのファンには、努力するべきことがあります。 Ruby 2.0を楽しみにしています!:)
テストで使用されたスクリプト:
factor.rb 、
factor.py 、
factor.pl 、
factor.phpUpd:コメントには、結果の客観性についての議論がありました。 はい、私は主張しません、テストは合成であり、さらに、生産性の包括的な分析を行う目標がありませんでした。
結果は次のように考えることができます:
1.これらの言語での実行速度は同程度です(少なくとも、このタスクに大きなジャンプはありません)。
2. Ruby(Rubyに関する記事に基づくこのベンチマーク)は、パフォーマンスの観点から正常に開発されています。
Upd2: Habrauser
deeruaは、明確にするために
図を作成し、その上にテスト結果が表示されます。
Upd3: AlDev
Habraiserは脇に
立たず、図の別のバージョンを作成しました。