実行速度

数式エバリュエータは実行の都度数式の構文を解析して評価するインタープリタ ですので、数式をハードコードしたプログラムよりは実行速度が 遅くなるのはやむを得ません。以下の式について、ハードコード したものと数式エバリュエータを使った場合とで速度を測定しました。

(ハードコード)


double d=Math.sin(0.5)+1.5;

(数式エバリュエータ)


double d=formulaEvaluator.dEvaluate("sin(0.5)+1.5");

100,000回実行した結果は以下のとおりで、数式エバリュエータは約100倍の 処理時間がかかっていることがわかります。

処理実行時間(ミリセカンド)
ハードコード16
数式エバリュエータ1672

100倍というと大変遅いようですが、10万回実行して1.6秒ですから、 決して実用に耐えないほどの遅さではないと言う事がわかります。 そうはいっても、本当に処理速度がクリティカルなアプリケーションでは ハードコードを選択すべきでしょう。