Apr 29, 2000

Lazy Compilation

JITコンパイルを1、2度延期することをLazy Compilationと呼ぶのにはかなり抵抗を感じる。Lazy Functionalの呪縛かも知れないが…。

JalapenoのEager Compilationにも確かに抵抗を感じる。クラスロード時にクラスに含まれるメソッドをすべてコンパイルするということには、「クラスがロードされたよ、このクラスの中のメソッドが呼ばれるに違いない、ってことはこのクラスの他の多くのメソッドも呼ばれるに違いないぞ」という投機的予測が含まれている。コールチェーンを解析して、実行されるメソッド群をあらかじめバッチ的にコンパイルしておくとかすれば、確かにEagerだと素直に納得できるのだけれども…。

ついでに言うと、「JITコンパイルを1、2度延期する」という手段が有効なのは、「Hotspotメソッドは2度呼ばれるというHeuristics」を導入したか、あるいは「2度呼ばれるメソッドはHotspotである」と定義したためだ。単にLazy Compilationというと、最小のコンパイル単位をメソッドと決めたのであれば、やはりコールチェーンの一番末端のノードから順に1メソッドずつコンパイルしてくることではないかと思う。そんなやり方に意味があるかどうかは別にして。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com