(...) jak sądzę jest to spowodowane tym, że operacja wypełnienia FillRect jest wykonywana na pustej bitmapie.
To akurat nie ma żadnego związku. Pusta, niepusta, i tak musi ustawić każdy piksel.
W drugim przykładzie masz wyciek...
Mam wątpliwości, czy tego typu testy są wogóle miarodajne.
Są miarodajne, bo możesz określić wąskie gardła. Tu nie chodzi o konkretną wartość, bo ta, wiadomo, może różnić się w zależności od sprzętu czy systemu, chodzi tu o stosunki między różnymi wartościami pomiarów.
Co do funkcji FillRect to przypuszczam, że nie jest wywoływana każdorazowo, gdy zachodzą zmiany w tle, bo niby po co
FillRect jest tylko przykładem, ponieważ to ona tworzy tło. Jeśli tłem byłaby bitmapa, wtedy rozważana byłaby
CopyRect.