Canvas - это круто! - страница 66

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

bool  ImageFromResource(const string _resource,const int _w,const int _h,uint &_pic[])
{
   uint lp[];
   int wr, hr;
   if(_w<2 || _h<2) return(false);
   if(!ResourceReadImage(_resource,lp,wr,hr))
   {
      Print("Еrror loading resource: ",_resource);
      return(false);
   }
   if(_w!=wr || _h!=hr)
   {
      //resize image
      ArrayResize(_pic,_w*_h);
      double sw=(double)_w/wr;
      double sh=(double)_h/hr;
      //
      for(int _y=0; _y<_h; _y++)
         for(int _x=0; _x<_w; _x++)
            _pic[_y*_w+_x]=lp[int(_y/sh)*wr+int(_x/sw)];
   }else ArrayCopy(_pic,lp);
   return(true);
}

Визуальное сравнение алгоритмов ресайза, справа упрощенный вариант.


 
fxsaber:

банальная минимизация таких Терминалов уменьшает большую нагрузку на CPU почти до нуля. Зачем такой нерационально кушающий GUI - непонятно.

за это надо сказать спасибо еще программистам,

например у самого популярного видео madvr кодека в паузе он жрет как будь-то майнит)

 
fxsaber:

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

Очень глупо выходит, когда банальная минимизация таких Терминалов уменьшает большую нагрузку на CPU почти до нуля. Зачем такой нерационально кушающий GUI - непонятно.

А вы думаете, что отрисовка гуя по 300 раз в секунду дается бесплатно?

Вы ведь сами первым заявите, что мы неправильно рисуем, не дорисовываем или пропускаем отрисовку.

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


Для информации: MetaTrader может делать по 100-300 FPS из-за большого потока котировок в секунду. Не 1-2 кадра в секунду как обычные программы, а реально прямо сотни могут быть в зависимости от потоков котировок.

 
Renat Fatkhullin:

А вы думаете, что отрисовка гуя по 300 раз в секунду дается бесплатно?

Вы ведь сами первым заявите, что мы неправильно рисуем, не дорисовываем или пропускаем отрисовку.

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


Для информации: MetaTrader может делать по 100-300 FPS из-за большого потока котировок в секунду. Не 1-2 кадра в секунду как обычные программы, а реально прямо сотни могут быть в зависимости от потоков котировок.

Ренат вы ведь тестировали все новые процессоры, какие сейчас на уровне 10 интел процев и zen2 быстрее работают на одно ядро у нас здесь работают?

на сколько знаю интел в многопотоке никакой, амд хорошо паралелит многопоток, есть от него толк
 

Canvas - Круто!

А как это помогает в торговле?

 
Ренат, пока вы здесь, пожалуйста напишите ответ
 
prostotrader:

Canvas - Круто!

А это помогает в торговле?

да

 
Yury Kulikov:
Для некоторых задач, например масштабирование интерфейса, можно существенно упростить функцию ресайза картинки.
Пример функции загрузки ресурса в заданные размеры.

Визуальное сравнение алгоритмов ресайза, справа упрощенный вариант.

Ну да, Юрий, согласен. Такой сверхбыстрый алгоритм имеет право на жизнь. 
Но, конечно, он имеет серьезную потерю качества. Особенно в изображениях, где есть резкие переходы цвета. 
Вот например набросал скрипт, который это наглядно демонстрирует. Справа этот быстрый алгоритм, а слева мой (где-то в 4-10 раз медленее).
Пример уменьшения обычного скриншота:


ЗЫ Кстати я понял почему были такие моргания. Я делал ресайз битмапа на каждом кадре, что было глупо и это было причиной. Сейчас убрал и все плавно работает.

Файлы:
Scaling.gif  12254 kb
scaling2.zip  290 kb
 
Fast235:

Ренат вы ведь тестировали все новые процессоры, какие сейчас на уровне 10 интел процев и zen2 быстрее работают на одно ядро у нас здесь работают?

на сколько знаю интел в многопотоке никакой, амд хорошо паралелит многопоток, есть от него толк

Все современные процессоры работают достаточно быстро.

Особенно, если есть много памяти и NVMe диски для задач терминала. Очень рекомендуется графическая карта среднего уровня.

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

 
Renat Fatkhullin:

Все современные процессоры работают достаточно быстро. Особенно, если есть много памяти и NVMe диски.

Для терминала очень рекомендуется графическая карта среднего уровня.

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

отлично)