Mathクラスでは、ネイティブで速く動作する機構がある場合は優先的に使用するという仕様なんですが、では単純な計算の場合はどうなのかを比較してみました。
たとえば、2乗を計算する場合。長大な配列を用意して、全ての要素の演算を処理し終えるのにどのくらい時間がかかるかを比較しました。10000個では差が出なかったので、5,000,000個(5百万個)の要素を持つ配列で試しました。結果は・・・。
配列版 : 78ms
Math版 : 437ms
けっこう大きな差が出ました。では、3乗では・・・?
配列版 : 79ms
Math版 : 2765ms
これは大きいですね。 C言語のライブラリでもそんな感じですが、指数が整数で既知の場合は、直接掛け算した方が速そうです。ちなみに実行環境は、WindowsXPPro、1.86GHz/767MB、J2SE DK5.0Update5でコンパイル。オプションは、JVMのヒープ領域を100MBに指定した以外はデフォルト。
コメントする