Frits Onion によるFastObjectFactoryに関する考察

FastObjectFactory revealed

Frits Onion がFastObjectFactory の役割について考察しています。
インスタンスをGetInstanceで呼び出すよりも速く(Fast)呼び出すためにあるんじゃないか、という話になってますね。

それはともかく、Frits OnionのEssential ASP.NET の2.0版でないのかなぁ。。。

#FritsのWebcastsのページに気づいたのは大収穫だった。

公開 20-10-2005 10:56 投稿者 ono
カテゴリ:

コメント

 

菊池 said:

んーと、メタデータを検索するオーバーヘッドを避けたいというのが一番の理由と思われます。

Assembly asm = Assembly.Load("f-u8au0h");
Page pg1 = (Page)asm.CreateInstance("ASP.default_aspx");

これだとこのコードが実行される毎に「メタデータ全体」から ASP.default_aspx が検索されます。

Assembly asm = Assembly.Load("app_web_zlhdxrok");
Type t = asm.GetType("FastObjectFactory_app_web_zlhdxrok");
MethodInfo mi = t.GetMethod("Create_ASP_default_aspx", BindingFlags.Static | BindingFlags.NonPublic);
Page pg = (Page)mi.Invoke(null, null);

こっちだと、「FastObjctFactoryのメソッドリスト」からメソッドが検索されます。

どっちが検索対象が大きいかといえば前者なので、後者の方が高速なわけですね。

また、newObj オペコードがJITによって解釈される時に対象が newObj対象がsealedであればインライン化とかがしやすいとか細かいとこチューニングしてる様に見えますね。
11月 14, 2005 19:53
この投稿に対する新規コメントはできません
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems