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

 
Andrey Khatimlianskii:

Как по-человечески ограничить частоту обновления канваса в визуализаторе?

Чтобы на медленной скорости картинка обновлялась реалтайм, а на быстрой не тормозила тест?

Сейчас действительно канвас (если обновляется на каждом тике) тормозит всю визуализацию (профилирование показывает 80-90% времени на отрисовку). Я извернулся настраиваемой паузой в секундах, но это костыль, ограничивающий функциональность (картинка обновляется редко даже на медленной скорости).

К чему привязаться, чтобы не обновлять слишком часто? GetMicroseconds?

Какие функции пропускать?

Андрей я уже писал об этом вот здесь больше года назад.

получается вполне сносно. 
Вот видео в реальном времени (всего два канваса):

только нужно добавить, что в тестере не работает событие CHARTEVENT_CHART_CHANGE, 

поэтому я включаю в блок формирования канваса следующее (при использовании iCanvas):

void BildParabolas() {
   if(Canvas.tester) ChartChanged();
   static uint lastCalc=0;
   uint cur=GetTickCount();
   if (cur-lastCalc<17) return;
...

А вот часть кода в OnCalculate из индикатора, который на гифкe:

static uint lastCalc=0; 
if (Canvas.tester) {
      uint cur=GetTickCount();
      if (cur-lastCalc>17) {
         lastCalc=cur;
         BildParabolas();
         menu.Draw();
      }
   }

 
Dmitry Fedoseev:
невооруженным взглядом видно, что канвас значительно тормознутее

   

 
Taras Slobodyanik:

в тестере МТ5, таймер работает, можно поставить на 60 сек и будет обновляться раз в минуту по тестерному времени)

Про костыль с паузой я написал, он не подходит.

 
Nikolai Semko:

Андрей я уже писал об этом вот здесь больше года назад.

получается вполне сносно. 
Вот видео в реальном времени (всего два канваса):

Выглядит медленновато, как для максимальной скорости.

Спасибо, попробую через GetTickCount!

 
Andrey Khatimlianskii:

Выглядит медленновато, как для максимальной скорости.

Спасибо, попробую через GetTickCount!

Нет это не максимальная. Там очень чувствительно перед максимальным.
Вот максимальная:

 
Andrey Khatimlianskii:

Выглядит медленновато, как для максимальной скорости.

Спасибо, попробую через GetTickCount!

Так же, чтобы не было смещений по отношению к самому графику, надо бы попробовать поэкспериментировать с OBJ_BITMAP, а не с OBJ_BITMAP_LABEL. Чтобы привязка была ко времени и цене, а не к координатам XY.
Все хочу попробовать, но никак руки не доходят. В этом случае нужно делать канвас больше размера окна и сильно логику управления менять. Возможно будет сильный выйгрыш по скорости, из-за того, что не нужно перерисовывать весь канвас, а только меньшую часть, если масштаб по вертикали не меняется. Во всяком случае не будет резать глаза разбалансировка канваса с основным графиком при быстрой движухи.

 
Nikolai Semko:

Нет это не максимальная. Там очень чувствительно перед максимальным.
Вот максимальная:

Это "все тики"?! Если да, то круто. Проверю.


Nikolai Semko:

Так же, чтобы не было смещений по отношению к самому графику, надо бы попробовать поэкспериментировать с OBJ_BITMAP, а не с OBJ_BITMAP_LABEL. Чтобы привязка была ко времени и цене, а не к координатам XY.
Все хочу попробовать, но никак руки не доходят. В этом случае нужно делать канвас больше размера окна и сильно логику управления менять. Возможно будет выйгрыш по скорости. Во всяком случае не будет резать глаза разбалансировка канваса с основным графиком при быстрой движухи.

У меня обычная панелька. Нет привязки к чарту.

 
Andrey Khatimlianskii:

У меня обычная панелька. Нет привязки к чарту.

а, ну тогда это вообще норм.
У меня же тоже на гифке один канвас это панелька, и она меньше всего ресурсов отъедает, так как ее не нужно так часто перерисовывать и ловить момент прихода нового бара.

 
Andrey Khatimlianskii:

Это "все тики"?! Если да, то круто. Проверю.

нет это были минутные OHLC на 3 минутах. Но я проверил на всех тиках. Картина почти такая же. Ведь перерисовка канваса в этом случае на завязана на тики, а только на фактическое время(не тестерное). Т.е. чем больше скорость, тем меньше плотность кадров. Но для глаз разницы не видно.

 
Дааа... Анимированные гифки, это конечно сильный аргумент. 
Причина обращения: