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