[ADP開発日誌]Ver 0.82のリリース

 忙しさにかまけてブログの更新を怠っていましたが、気がつけば今月末でADP公開2周年になります。公開一周年記念の記事も完成していないのに、時の立つのは速いものだと感慨に浸っております。

というわけで、間が空きましたがVer 0.82のリリースです。

今回の変更点は、
・バグフィックス
・sprintfの改修
・パフォーマンスの改善
になります。
また、今回のリリースからホスティングサイトをSourceforge.JpからSourceforge.netに変えました。

sprintfの改修ですが、詳しくはsprintfのマニュアルをご参照頂くとして、たとえばDBからの戻り値をsprintfで成型する場合に、便利に使えるようにしています。
例えば、以下のように記述することができます。


,db.sql@("SELECT * FROM users WHERE hogehoge ",[]).each.
 sprintf("%s:first_name; %s:secondname;様 の誕生日は、%s:birth_dayです。").
 prtn,next;

DBの取得から成型、表示まで一気に書けるところがAnother Data Processorらしくなかなかよろしいかと思います(自画自賛)。


パフォーマンスの改善ですが、Ver 0.60以来の改善になります。
Ver 0.60から0.81になったことでパフォーマンスが下がりましたが、Ver 0.82は0.60以上のパフォーマンスになりました。

前回と環境が変わりましたので改めてベンチマークをとりますと、

◆Windows上でのJavaScript vs ADP
■マシン
・CPU  Core i7-920(2.66GHz HT/Turbo Boost OFF)
・メモリ 12GB(DDR3-1066 2GB × 6)
・OS   Windows 7 Ulitimate (x64) 電源管理:高パフォーマンス
 
■結果
28のフィボナッチ数を求める時間
 IE8(64ビット版)452ミリ秒 
 FireFox 13.0.112ミリ秒 
 ADP 0.60(32ビット)343ミリ秒 
 ADP 0.81(32ビット)452ミリ秒 
 ADP 0.82(32ビット)265ミリ秒 

0.60と比べても20%以上速くなっています。今回はChromeの結果を掲載していません。またFireFoxですが、12ミリ秒とかなり速いです。前回パフォーマンスについて『FireFox3.6未満』と記載しましたが、残念ならがFireFoxと比較するのは厳しくなりました。

という訳で別の比較が必要になりましたので、ADPと、PHP、Javaと比べてみます。

◆CentOS6.2上でのPHP,Java,ADP
■マシン
・CPU   Core i7-980X(3.33GHz HT/Turbo Boost OFF)
・メモリ  24GB(DDR3-1066 4GB × 6)
・ホストOS Windows 2008R2(Hyper-V)
・ゲストOS CentOS 6.2(実行環境)

■テストコード
 テスト1:28のフィボナッチ数を求める PHPソース(Test1.php) Javaソース(Test1.java) ADPソース(Test1.p)
 テスト2:10万までの素数を求める PHPソース(Test2.php) Javaソース(Test2.java) ADPソース(Test2.p)

テスト2のPHPのコードですが、Stackoverflowさんのコードを使わせて頂きました。

■結果(timeコマンドのuser部分を抜き出した)
Linux(CentOS6.2 x64)上でのPHP(5.3.3)、Java(1.6)、ADP(0.82)の比較
 テスト1テスト2
 PHP(5.3.3)207ミリ秒 31,915ミリ秒 
 Java(1.6)38ミリ秒 4,862ミリ秒 
 ADP(0.82)190ミリ秒 3,765ミリ秒 

テスト結果をみますとADPはPHP5.3以上のパフォーマンスが出ています。特にテスト2の結果が1桁近く速くなっており、Javaよりも早くなっています。テスト1ではADPよりJavaが圧倒的に速いのですが、テスト2ではADPの方が速くなっています。テスト2のJavaはコレクションクラス(ArrayList)を使っておりその分遅くなっているようです。実際にこの部分を固定配列にすると実行速度は1/10になります(もっともコレクションクラスを使わないという選択肢はないかとも思いますが)。ADPの配列はC++で実装しています。私自身気づいていませんでしたが、かなり効率良く実装されているようです。

また、テスト2の、リンク先のトピックは元々「PythonがPHPより遅いのだが?」という質問でしたがADPのパフォーマンスはそれ以上なのでいわゆるスクリプト言語より速いことが解ります。
もっとも一部のテストからですので今後も色々ベンチマークテストを行い検証しようかと思います。

ちなみに、もっと大幅にパフォーマンスアップが望める改善策を思いついたのですが、かなりの改修が必要なので、ここまでの成果を0.82としてリリースし、より速くしたものを後のバージョンで出そうかと思っています。打倒JavaScriptですね(まぁJITを入れないとダメなような気がするが・・・)。
2012-07-12 | コメント:0件

コメントをどうぞ


『不適切なコメントへの対応』を一読下さい。
現在コメントは承認制となっております。

Previous Page | Next Page