Hi all, I've written a simple test application to measure gdiplus performace. Although currently it tests only GdipDrawImage() it could be easily extended to test anything else if desired.
I'm attaching the test source with results running 32-bit test binary with gdiplus=b and gdiplus=n (taken from win7). As could be observed, currently built-in gdiplus performs up to 17 times worse even in identity case in comparison with native gdiplus. With a scale/rotate graphics transform the results are up to 20 times slower. Considerig that built-n gdiplus status regarding support for various complex things is pretty good, perhaps it's time to spend some time optimizing its performans. -- Dmitry.
loop count 500 drawing 1 bpp image on a 1 bpp device bitmap format 0x30101, graphics format 0x30101 (identity): 0.801773 seconds bitmap format 0x30101, graphics format 0x30101 (scale): 3.504543 seconds bitmap format 0x30101, graphics format 0x30101 (rotate): 4.556153 seconds drawing 1 bpp image on a 24 bpp device bitmap format 0x30101, graphics format 0x21808 (identity): 0.703017 seconds bitmap format 0x30101, graphics format 0x21808 (scale): 3.347234 seconds bitmap format 0x30101, graphics format 0x21808 (rotate): 4.488745 seconds drawing 1 bpp image on a 32 bpp device bitmap format 0x30101, graphics format 0x26200a (identity): 0.694702 seconds bitmap format 0x30101, graphics format 0x26200a (scale): 3.339476 seconds bitmap format 0x30101, graphics format 0x26200a (rotate): 4.476375 seconds drawing 24 bpp image on a 1 bpp device bitmap format 0x21808, graphics format 0x30101 (identity): 0.785507 seconds bitmap format 0x21808, graphics format 0x30101 (scale): 3.460746 seconds bitmap format 0x21808, graphics format 0x30101 (rotate): 4.571289 seconds drawing 24 bpp image on a 24 bpp device bitmap format 0x21808, graphics format 0x21808 (identity): 0.686349 seconds bitmap format 0x21808, graphics format 0x21808 (scale): 3.341847 seconds bitmap format 0x21808, graphics format 0x21808 (rotate): 4.485448 seconds drawing 24 bpp image on a 32 bpp device bitmap format 0x21808, graphics format 0x26200a (identity): 0.695800 seconds bitmap format 0x21808, graphics format 0x26200a (scale): 3.390660 seconds bitmap format 0x21808, graphics format 0x26200a (rotate): 4.478116 seconds drawing 32 bpp image on a 1 bpp device bitmap format 0x26200a, graphics format 0x30101 (identity): 0.763379 seconds bitmap format 0x26200a, graphics format 0x30101 (scale): 3.414672 seconds bitmap format 0x26200a, graphics format 0x30101 (rotate): 4.522893 seconds drawing 32 bpp image on a 24 bpp device bitmap format 0x26200a, graphics format 0x21808 (identity): 0.678621 seconds bitmap format 0x26200a, graphics format 0x21808 (scale): 3.336979 seconds bitmap format 0x26200a, graphics format 0x21808 (rotate): 4.443335 seconds drawing 32 bpp image on a 32 bpp device bitmap format 0x26200a, graphics format 0x26200a (identity): 0.703239 seconds bitmap format 0x26200a, graphics format 0x26200a (scale): 3.404557 seconds bitmap format 0x26200a, graphics format 0x26200a (rotate): 4.491863 seconds
loop count 500 drawing 1 bpp image on a 1 bpp device bitmap format 0x30101, graphics format 0x30101 (identity): 0.311230 seconds bitmap format 0x30101, graphics format 0x30101 (scale): 0.257864 seconds bitmap format 0x30101, graphics format 0x30101 (rotate): 0.236181 seconds drawing 1 bpp image on a 24 bpp device bitmap format 0x30101, graphics format 0x21808 (identity): 0.041331 seconds bitmap format 0x30101, graphics format 0x21808 (scale): 0.060976 seconds bitmap format 0x30101, graphics format 0x21808 (rotate): 0.040561 seconds drawing 1 bpp image on a 32 bpp device bitmap format 0x30101, graphics format 0x26200a (identity): 0.072808 seconds bitmap format 0x30101, graphics format 0x26200a (scale): 0.092373 seconds bitmap format 0x30101, graphics format 0x26200a (rotate): 0.056539 seconds drawing 24 bpp image on a 1 bpp device bitmap format 0x21808, graphics format 0x30101 (identity): 0.242829 seconds bitmap format 0x21808, graphics format 0x30101 (scale): 0.265353 seconds bitmap format 0x21808, graphics format 0x30101 (rotate): 0.237676 seconds drawing 24 bpp image on a 24 bpp device bitmap format 0x21808, graphics format 0x21808 (identity): 0.043791 seconds bitmap format 0x21808, graphics format 0x21808 (scale): 0.064713 seconds bitmap format 0x21808, graphics format 0x21808 (rotate): 0.041189 seconds drawing 24 bpp image on a 32 bpp device bitmap format 0x21808, graphics format 0x26200a (identity): 0.075630 seconds bitmap format 0x21808, graphics format 0x26200a (scale): 0.092779 seconds bitmap format 0x21808, graphics format 0x26200a (rotate): 0.057513 seconds drawing 32 bpp image on a 1 bpp device bitmap format 0x26200a, graphics format 0x30101 (identity): 0.250685 seconds bitmap format 0x26200a, graphics format 0x30101 (scale): 0.266518 seconds bitmap format 0x26200a, graphics format 0x30101 (rotate): 0.242127 seconds drawing 32 bpp image on a 24 bpp device bitmap format 0x26200a, graphics format 0x21808 (identity): 0.054108 seconds bitmap format 0x26200a, graphics format 0x21808 (scale): 0.070041 seconds bitmap format 0x26200a, graphics format 0x21808 (rotate): 0.045579 seconds drawing 32 bpp image on a 32 bpp device bitmap format 0x26200a, graphics format 0x26200a (identity): 0.077109 seconds bitmap format 0x26200a, graphics format 0x26200a (scale): 0.091846 seconds bitmap format 0x26200a, graphics format 0x26200a (rotate): 0.056549 seconds
gdip_perform.tar.bz2
Description: Binary data
