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
participants (1)
-
Mike Hearn