View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003345SAS.Планета[All Projects] Багpublic21-06-2018 10:4710-09-2018 19:41
ReporterJackOfShadows 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version160707 
Target Version181221Fixed in Version181221 
Summary0003345: Рисование маршрута - тормоза после 20-й точки
DescriptionСтабильно начинает подтормаживать и в 160707, и в ночнушке после 20й-25й точки маршрута. При размещении точки загрузка процессора прыгает с 30 до 80%, на отрисовку точки надо где-то полсекунды.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0018335)
zed (manager)
22-06-2018 08:00

Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?

Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий.
(0018336)
zed (manager)
22-06-2018 08:26

Если у вас Windows 10, то проблема может быть именно в ней: GDI based application unusably slow in Windows 10
(0018340)
JackOfShadows (reporter)
25-06-2018 06:31

> Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?

Да, всё летает.

> Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий.

Я начал с ночной, конечно же.

> Если у вас Windows 10, то проблема может быть именно в ней: GDI based application unusably slow in Windows 10

Да, на обоих компах десятка.
(0018341)
vdemidov (manager)
25-06-2018 11:03

Ну, значит пора кардинально переделывать TMapLayerCalcLineCaptions. Вместо прямого отображения подписей - делать отображение сгенерированных маркеров с текстом. Причем эту генерацию, видимо нужно делать в отдельном потоке и с кэшированием результатов. Что-то среднее между текущей реализацией и реализацией подписей в растеризаторе слоя меток.
(0018342)
zed (manager)
25-06-2018 12:16

Переделывать нужно рендеринг шрифтов и делать альтернативу на DirectWrite.

https://github.com/graphics32/graphics32/issues/29
(0018343)
zed (manager)
25-06-2018 12:20

Кстати, в компоненте SynEdit идёт подготовка к переходу на DirectWrite и там можно подсмотреть реализацию. Но стоит учитывать, что DirectWrite будет доступен только в Windows 7 и выше, т.е. нужно оставлять совместимость и с GDI.
(0018344)
vdemidov (manager)
25-06-2018 12:38

Одно другому не мешает. Я вообще мечтал сделать вывод на экран тайлов, разных маркеров, элементов интерфейса с использованием аппаратного ускорения (OpenGL или Direct3D) в виде простых текстур. Меня именно наличие прямого рисования текста и линий останавливало от экспериментов в этом направлении.
(0018395)
zed (manager)
08-09-2018 21:17
edited on: 08-09-2018 21:35

Проблема в методе RenderText со значением AALevel больше 0 (у нас в этом месте 3). Чтобы сделать сглаживание, GR32 увеличивает шрифт в 2^N раз (где N - циферка AALevel) рендерит его на временную битмапку (которая получается очень большого размера), потом руками делает скейлинг битмапки вниз, до размера, соответствующего изначальному размеру шрифта и только потом у нас получается нужный битмап.

Предлагаю перейти на метод TextOut, который ничего подобного не делает, при этом скорость рендеринга увеличивается более чем на порядок. Правда, текст получается более тонкий и на дефолтном сером фоне становится менее заметен. Поэтому, одновременно предлагаю изменить и дефолтное оформление (см. 0003369 - скриншот new).

(0018396)
zed (manager)
08-09-2018 21:27
edited on: 08-09-2018 21:28

Тестовый бинарник: https://yadi.sk/d/7ZpmWZyVxrQbtg

JackOfShadows
Проверьте, как он поведёт себя.

Чтобы увидеть новое оформление, удалите в SASPlanet.ini секции CalcLine, CalcCircle и EditMarkPolyLine или SASPlanet.ini целиком (предварительно сделав бэкап).

(0018398)
Garl (manager)
09-09-2018 15:38

лучше! в разы резвее.
(0018399)
JackOfShadows (reporter)
10-09-2018 04:46

Проверил, тормозов нет. Спасибо.

- Users who viewed this issue
User List Anonymous (969x), Helpmister (1x), vdemidov (18x), Garl (4x), zed (23x), JackOfShadows (16x), bk99 (1x), MontoyaSat (1x)
Total Views 1033
Last View 04-08-2020 03:24

- Issue History
Date Modified Username Field Change
21-06-2018 10:47 JackOfShadows New Issue
22-06-2018 08:00 zed Note Added: 0018335
22-06-2018 08:26 zed Note Added: 0018336
22-06-2018 08:58 vdemidov Status new => feedback
25-06-2018 06:31 JackOfShadows Note Added: 0018340
25-06-2018 06:31 JackOfShadows Status feedback => new
25-06-2018 11:03 vdemidov Note Added: 0018341
25-06-2018 12:16 zed Note Added: 0018342
25-06-2018 12:20 zed Note Added: 0018343
25-06-2018 12:38 vdemidov Note Added: 0018344
08-08-2018 12:50 vdemidov Status new => confirmed
08-08-2018 12:50 vdemidov Category Рефакторинг => Баг
08-08-2018 12:50 vdemidov Target Version => 25xxxx
08-09-2018 21:17 zed Note Added: 0018395
08-09-2018 21:27 zed Note Added: 0018396
08-09-2018 21:27 zed Assigned To => zed
08-09-2018 21:27 zed Status confirmed => feedback
08-09-2018 21:28 zed Note Edited: 0018396 View Revisions
08-09-2018 21:35 zed Note Edited: 0018395 View Revisions
09-09-2018 15:38 Garl Note Added: 0018398
10-09-2018 04:46 JackOfShadows Note Added: 0018399
10-09-2018 04:46 JackOfShadows Status feedback => assigned
10-09-2018 19:41 zed Status assigned => resolved
10-09-2018 19:41 zed Fixed in Version => 181221
10-09-2018 19:41 zed Resolution open => fixed
10-09-2018 19:41 zed Target Version 25xxxx => 181221



Copyright © 2007 - 2020 SAS.Planet Team