Loader Optimization Benchmarks

Robert Shearman rob at codeweavers.com
Tue Jan 10 07:24:07 CST 2006


Hi,

I thought it would be good to post some benchmarks for the patch I just 
sent to wine-patches:
http://www.winehq.org/pipermail/wine-patches/2006-January/023323.html

I tested the loader code using the following in both cases:
    int i;
    DWORD dwTicksAfter;
    DWORD dwTicksBefore = GetTickCount();
    for (i = 0; i < 1000; i++)
        LoadLibrary("ole32");
    dwTicksAfter = GetTickCount();
    trace("time taken = %ld ms\n", dwTicksAfter - dwTicksBefore);


Before the patch:
time taken = 658 ms
time taken = 661 ms
time taken = 661 ms
time taken = 658 ms
time taken = 659 ms

After the patch was applied:
time taken = 12 ms
time taken = 12 ms
time taken = 12 ms
time taken = 13 ms
time taken = 12 ms

So it should be obvious that there are some very real gains from using 
this patch in the test case.

You might think that an application loading a DLL 1000 times is very 
unlikely, but bear in mind that the ole32 marshal tests load ole32 76 
times. It is therefore conceivable that something more complex like 
InstallShield could load ole32 over 100 times.

-- 
Rob Shearman




More information about the wine-devel mailing list