2010-08-01から1ヶ月間の記事一覧

コトの始まり

CallとInvokeのSematics的な差は理解できたんだけど、InvokeとQuoteがどー違うのか何が違うのか理解できなくて二日ほど詰まったw なので、後々また詰まったときのために覚え書きをかいとこうかと。ついでに、あんまり混同しようもないけど、Invoke扱うついでに比…

ということでどれくらい効率差が出てくるか?

自分ところの環境で、やって見た結果は、 通常のP/Invokeが0.082秒 リフレクションしつつの毎回呼び出しが1.05秒 デリゲート代入した呼び出しが0.075秒 DLLの動的読み込みしたのが0.10秒 と、概ねこんな感じ。 かなりいい加減なテストなので、その辺割り引いてみ…

で、やってみた

動的にすることが主目的ではないけど、やらざるえないので、System.Refrection.Emit周りのお世話になって書いたのが以下 using System; using diag = System.Diagnostics; using emit = System.Reflection.Emit; using interop = System.Runtime.InteropServic…

 IL内部でどーなってるのか?

別にMarshalをその場で実行するようなコードをCSCが作ってくれてるわけじゃない。 MethodSignatureが書きのようになり、これをCILがP/Invokeと解釈して、後はよろしくやってくれるGetTickCountを呼び出した場合は概ね以下みたいなILになってる。 .method public …

Summary

あの頃、これ知ってりゃ、もーちょい楽できたかもしれない。 キモは、LoadLib使うんでは無しに、動的生成したAssemblyの中でP/Invokeを決めてしまえと言うところ。

P/Invoke周りを

ばらしてみたので、つらつらと。。。