Рисование полилиний на GDI
От: dmitry_npi Россия  
Дата: 14.07.10 12:08
Оценка:
Была у меня функция, выводящая полилинии, алгоритм примерно такой:

void DrawMyPolylines()
{
    for(int i=0; i<NUMBER_OF_LINEAR_OBJECTS; i++) // несколько тысяч
    {
        // создание данных для группы ломаных, преобразование координат
        //...
        
        // выбор пера (толщина, цвет) для группы ломаных...

        SelectObject(перо);

        PolyPolyline(Группа полилиний);
    } 
}


Опытным путем я выяснил, что огромное количество полилиний рисуется всего несколькими видами перьев.
Поэтому я, с целью сократить количество вызовов PolyPolyline(), сгруппировал данные по перьям. Теперь PolyPolyline, вместо несколько тысяч раз, вызывается десяток раз, но с большим объемом данных.

Результат меня удивил — стало в 5 раз медленнее. Причем я измерил — это не накладные расходы на группировку.
В чем тут подвох?
Атмосферная музыка — www.aventuel.net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.