Canvas vs Labels - страница 8

 
Nikolai Semko:

Да, не увидел, что это внутренний чарт.
Ну судя по профилированию источник тормозов, когда происходит скролинг чарта, вот в этой строке:

Профилирование с активным скролингом:

Профилирование с активным движением мышки без скролинга(без нажатой ЛКМ):

ЗЫ: Поэтому источник тормозов все же не канвас, а объекты.

К сожалению, у меня профилирование этого кода выдает пустоту. b2828.

 
fxsaber:

К сожалению, у меня профилирование этого кода выдает пустоту. b2828.

видно еще не допилили профилировщик. У меня тоже иногда пусто было. Но сейчас работает.

с этой тоже работает

 
Renat Fatkhullin:

Это ошибочный подход. Тем более, что в визуальном тестере другая отложенная модель отрисовки, чтобы полностью не затормозить процесс тестирования.

Ясно. Значит, помимо замеров в тестере придётся сделать замеры в чарте.

Renat Fatkhullin:

Я этого не говорил.

Я указал на очевидные ошибки и объяснил как работает система отрисовки.

Ну значит я всё перепутал. Извините.

 
Nikolai Semko:

видно еще не допилили профилировщик. У меня тоже иногда пусто было. Но сейчас работает.

с этой тоже работает

У меня и на b2830 пусто.

 
Igor Makanu:

с событийной моделью Windows - даже если быстро перемещать мышку, то начинает возрастать нагрузка на процессор, не важно какое приложение было в фокусе

ЗЫ: проверил в диспетчере задач Вин10... почему то не показывает увеличение нагрузки на процессор, в Вин7 точно на этом же П возрастала нагрузка если быстро двигать мышей - сомневаюсь, что Вин10 кардинально поменяли событийную модель, скорее всего диспетчер задач по другому работает 

Вин10. Вот участок когда я двигаю мышкой в окне ввода этого сообщения с текстом с зажатой ЛКМ


Вот без ЛКМ


 
Aleksey Mavrin:

Вин10. Вот участок когда я двигаю мышкой в окне ввода этого сообщения с текстом с зажатой ЛКМ


Вот без ЛКМ


не наглядно

вот с виртуалки под Вин7 - если мышей не двигать, то 3-4% нагрузка ЦПУ

если мышу быстро передвигать, то 11-14% нагрузка

в общем я про то, что очередь сообщений в Вин всегда приходится обрабатывать, а это лишние такты процессора - гугл "С++ windows окно" - любой мануал по написанию на С++ оконного приложения Windows с использованием WinAPI, там про обработчик сообщений почитать

 
Igor Makanu:

не наглядно

вот с виртуалки под Вин7 - если мышей не двигать, то 3-4% нагрузка ЦПУ

если мышу быстро передвигать, то 11-14% нагрузка

в общем я про то, что очередь сообщений в Вин всегда приходится обрабатывать, а это лишние такты процессора - гугл "С++ windows окно"

Если в цифрах нагляднее, то ничего не делаю - 10-15 колеблется, при движении 17-30.

Но разве это должно приводить к замедлению ОнТаймера в 2 раза, нет конечно, разве что при загрузке 95-99%.

 любой мануал по написанию на С++ оконного приложения Windows с использованием WinAPI, там про обработчик сообщений почитать

обработчик сообщений занимает долю процессора и так, просто не пользуется когда нет очереди. Для процессов МТ не должно быть урезания процессорного времени при такой загрузке.
 
Aleksey Mavrin:

Но разве это должно приводить к замедлению ОнТаймера в 2 раза, нет конечно, разве что при загрузке 95-99%.

таймер это тоже событие WinAPI, но сомневаюсь, что каждая MQL-программа подписывается на системный таймер - это эмулирует окружение MQL (виртуальная машина)

Aleksey Mavrin:

обработчик сообщений занимает долю процессора и так, просто не пользуется когда нет очереди. Для процессов МТ не должно быть урезания процессорного времени при такой загрузке.

очередь есть всегда у активного окна, тут в общем гадание на кофейной гуще как эту очередь терминал раскидывает между чартами и затем между MQL-программами


ну и в итоге - чтобы получить монопольный режим и не обрабатывать сообщения - вариантов не много, первое, что приходит - эксклюзивный полноэкранный режим приложения, но это другая история, как впрочем если "битва за ресурсы ПК", тогда нужен просто API для выхода на биржу и писать свое приложение, а там регистрировать окно или нет


ладно, не интересно искать пиковые значения нагрузки ЦП - пока мы в Вин, все может быть, меня в целом, все устраивает

 
Igor Makanu:

таймер это тоже событие WinAPI, но сомневаюсь, что каждая MQL-программа подписывается на системный таймер - это эмулирует окружение MQL (виртуальная машина)

не факт. если помните был баг с таймером и количеством хендлов в терминале, это опосредованно говорит о том, что каждый таймер в МТ вполне может быть системным виндовым

 
На MT4 ситуация интереснее (код кроссплатформенный) - OnTimer перестает вызываться на время движения мышкой.