typelib caching

Mike Hearn mike at theoretic.com
Thu Jul 24 10:40:45 CDT 2003


Well, it works, finally. No more crashes/hangs :) That is - sort of.

Unfortunately, it's a bit too slow to be usable. A few wild stabs in the
dark and some timing traces showed the culprit to be LoadTypeLibEx:

trace:ole:LoadTypeLibEx File L"C:\\windows\\system\\SHDOCVW.DLL" index 1
trace:ole:LoadTypeLibEx returns 00000000, in 15 milliseconds

trace:ole:LoadTypeLibEx File L"C:\\windows\\system\\SHDOCVW.DLL" index 1
(hmmmm, we load it again?)
trace:ole:LoadTypeLibEx  returns 00000000, in 46 milliseconds
(odd, slower than last time)


trace:ole:LoadTypeLibEx File L"C:\\windows\\system\\mshtml.tlb" index 1
trace:ole:LoadTypeLibEx  returns 00000000, in 1208 milliseconds
(over a second parsing the type library? well, maybe it is quite large)

trace:ole:LoadTypeLibEx File L"C:\\windows\\system\\mshtml.tlb" index 1
trace:ole:LoadTypeLibEx  returns 00000000, in 6689 milliseconds
(almost 7 seconds to parse the type lib a second time!?!)

trace:ole:LoadTypeLibEx File L"C:\\windows\\system\\mshtml.tlb" index 1
trace:ole:LoadTypeLibEx  returns 00000000, in 42139 milliseconds

Waaaaaaah, 42 seconds! There's a big source of the sluggishness.

So, a few questions that I can chew on tomorrow:

* Shouldn't typelib loading be cached somewhere? Reparsing typelibs like
this seems rather wasteful.
* Why on earth would the time taken go up so massively on each run?
* Where abouts in the typelib parsing could the speed hit be?

Pretty clearly no typelib is going to be so complex it takes an Athlon
1200 almost a minute to parse, there is a nasty bug there somewhere.

thanks -mike




More information about the wine-devel mailing list