> 例に出ているfactがすべて末尾再帰でない気ががが。 ありがとうございます。そのとおりですね、末尾再帰の除去っていう日本語が誤解を招くのかも。。 Cコンパイラの末尾再帰の除去(Tail Recursion Elimination)は、 厳密な末尾再帰を対象にしてループに変換するのではなく、 再帰呼出をループに変換しようといろいろがんばるっぽいです。 JVMで同等のことをやろうとすると障害が多いのですが、 JVMで末尾再帰だけ対象にした場合も考えてみようと思います。
Performance techniques used in the Hotspot JVM What code shapes does the JVM optimize best? Here is a list. Knowing these optimizations may help language implementors generate bytecodes that run faster. Basic information about bytecodes is in Chapter 7 of the JVM Spec.. In the context of this discussion, "compiler" = "JIT", and usually more specifically refers to the server (or final tier) JIT. Ge
Javaの最適化の議論で「インライン展開」「エスケープアナリシス」などの用語が出てきていて、気になって調べたところ、java実行時のオプションで最適化の方法を指定したり実行過程を表示したり出来るらしい。 主なオプションについて Java HotSpot VM Optionsにパフォーマンスに影響しそうなHotSpot VMのオプションが説明されている。 例: オプション 効果 -XX:+PrintCompilation メソッドがコンパイルされた際にメッセージを表示 -XX:+UseBiasedLocking Biased Lockingを使用する -XX:+OptimizeStringConcat 可能なら文字列の連結操作の最適化を行う -XX:+AggressiveOpts 将来のリリースでデフォルトになりそうな最適化フラグを有効にする ... ... たとえばjava起動時に-XX:
前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く