Re: Ускорение графического вывода
От: Serguei666 Беларусь  
Дата: 19.03.03 05:03
Оценка:
Здравствуйте, Gregory, Вы писали:

G>А не знает-ли кто, господа, как оптимизировать графический вывод в View. А то скролинг страшный как война с Иракаом.

G>Если на прямую выводить, то мигает как аварийная сигнализация, а если сначала в память а потом BitBit, то тормозит страшно. Если бы вот как в Excel...И как им это удается?

Создание битмапины занимает кучу времени, причем оно нелинено растет в зависимости от размера битмапины.
Идеальный вариант такой: не надо отрисовывать все. Надо отрисовывать только инвалидные области.
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[11]: Ускорение графического вывода
От: Patalog Россия  
Дата: 19.03.03 10:28
Оценка:
Здравствуйте, Всеволод, Вы писали:

[]

P>>+ то же самое насчет шрифтов


В>А я так понял, что шрифт не фиксированный и у каждой ячейки он может быть свой.

В>Если количество используемых шрифтов ограничено, то тогда клнечно имеет смысл и их сформировать один раз и на всегда.

Ну не бесконечное же число... А вообще, создание шрифта весьма и весьма дорогостоящая операция.
Почетный кавалер ордена Совка.
Re[2]: Ускорение графического вывода
От: Gregory Россия ICQ 300403361
Дата: 19.03.03 12:17
Оценка:
Здравствуйте, Serguei666, Вы писали:

S>Создание битмапины занимает кучу времени, причем оно нелинено растет в зависимости от размера битмапины.

По сравнению с самой прорисовкой в цикле — слезы.
S>Идеальный вариант такой: не надо отрисовывать все. Надо отрисовывать только инвалидные области.
А если ивалиден весь клиент (PageUp\PageDn).
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг
Re[3]: Ускорение графического вывода
От: Serguei666 Беларусь  
Дата: 19.03.03 17:49
Оценка: 7 (1)
Здравствуйте, Gregory, Вы писали:

G>Здравствуйте, Serguei666, Вы писали:


S>>Создание битмапины занимает кучу времени, причем оно нелинено растет в зависимости от размера битмапины.

G>По сравнению с самой прорисовкой в цикле — слезы.
Так у вас сама отрисовка занимает бОльшую часть времени? Тогда оптимизировать именно ее.
Как?
а) Уменьшением количествя создания временных обьектов — типа ручек, фонтов, кисточек.
б) Постаратся уменьшить количество вызовов SelectObject, SetTextColor и т.д.
б) Не рисовать ячеек, которые находятся за границей клиентской области. У вас я не вижу никаких попыток это сделать
То, что у вас сейчас есть — успешно поддается оптимизации.
И еще раз напомню — рисовать только инвалидные области

S>>Идеальный вариант такой: не надо отрисовывать все. Надо отрисовывать только инвалидные области.

G>А если ивалиден весь клиент (PageUp\PageDn).
Это не противоречит тому, что я сказал. Если инвалиден весь клиент, значит, отрисовывать всего клиета.
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[4]: Ускорение графического вывода
От: Gregory Россия ICQ 300403361
Дата: 20.03.03 08:59
Оценка:
Здравствуйте, Serguei666, Вы писали:

S>Так у вас сама отрисовка занимает бОльшую часть времени? Тогда оптимизировать именно ее.

S>Как?
S>а) Уменьшением количествя создания временных обьектов — типа ручек, фонтов, кисточек.
S>б) Постаратся уменьшить количество вызовов SelectObject, SetTextColor и т.д.
S>б) Не рисовать ячеек, которые находятся за границей клиентской области. У вас я не вижу никаких попыток это сделать
Плохо смотришь.
for (; CellID.Row() < nRows && y <= ClientRect.bottom; CellID.Row()++)

S>То, что у вас сейчас есть — успешно поддается оптимизации.
S>И еще раз напомню — рисовать только инвалидные области

Господа! Еще раз повторяю. Все это — ловля блох! Наиблее тормозящей функцией, время выполненя которой состовляет ~2/3 от общего, является DrawText. Привожу очередные результаты измерений:
Rctangle draw time: 20 Text draw time: 171
Rctangle draw time: 30 Text draw time: 150
Rctangle draw time: 30 Text draw time: 140
Rctangle draw time: 30 Text draw time: 180
Rctangle draw time: 50 Text draw time: 130
Rctangle draw time: 30 Text draw time: 140
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг
Re[5]: Ускорение графического вывода
От: Patalog Россия  
Дата: 20.03.03 09:12
Оценка:
Здравствуйте, Gregory, Вы писали:

[]

TextOut(ExtTextOut) не пробовал? Оно вроде побыстрее должно...
Почетный кавалер ордена Совка.
Re[5]: Ускорение графического вывода
От: Gregory Россия ICQ 300403361
Дата: 20.03.03 09:21
Оценка:
Господа! Ура! Победа разума над Сцирцопалилой!

Привожу результаты замеров времени для функций TextOut и ExtTextOut:

TextOut:

Rctangle draw time: 10 Text draw time: 20
Rctangle draw time: 10 Text draw time: 10
Rctangle draw time: 40 Text draw time: 30
Rctangle draw time: 20 Text draw time: 10
Rctangle draw time: 40 Text draw time: 20
Rctangle draw time: 51 Text draw time: 20


ExtTextOut:

Rctangle draw time: 20 Text draw time: 30
Rctangle draw time: 30 Text draw time: 10
Rctangle draw time: 30 Text draw time: 40
Rctangle draw time: 10 Text draw time: 50
Rctangle draw time: 20 Text draw time: 20
Rctangle draw time: 50 Text draw time: 20


Вот теперь можно ловить блох! Слон пойман!
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг
Re[6]: Ускорение графического вывода
От: Denwer Россия  
Дата: 20.03.03 09:29
Оценка:
Здравствуйте, Gregory, Вы писали:

G>Господа! Ура! Победа разума над Сцирцопалилой!


Я ж тебе это посоветовал 2 дня назад
Re[7]: Ускорение графического вывода
От: Gregory Россия ICQ 300403361
Дата: 20.03.03 12:30
Оценка:
Здравствуйте, Denwer, Вы писали:


D>Я ж тебе это посоветовал 2 дня назад


Да, ты знаешь, я это тогда попробовал, и визуально эффекта оценить не смог, поэтому решил, что хрен редьки не слаще. Но цифры — самая упрямая в мире вещь! Видимо явного эффекта небыло заметно потому, что тормозили битмампы и CDC, с которыми теперь следует бороться.
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.