Была у меня функция, выводящая полилинии, алгоритм примерно такой:
void DrawMyPolylines()
{
for(int i=0; i<NUMBER_OF_LINEAR_OBJECTS; i++) // несколько тысяч
{
// создание данных для группы ломаных, преобразование координат
//...
// выбор пера (толщина, цвет) для группы ломаных...
SelectObject(перо);
PolyPolyline(Группа полилиний);
}
}
Опытным путем я выяснил, что огромное количество полилиний рисуется всего несколькими видами перьев.
Поэтому я, с целью сократить количество вызовов PolyPolyline(), сгруппировал данные по перьям. Теперь PolyPolyline, вместо несколько тысяч раз, вызывается десяток раз, но с большим объемом данных.
Результат меня удивил — стало в 5 раз медленнее. Причем я измерил — это не накладные расходы на группировку.
В чем тут подвох?