Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а, ну тогда это вообще норм.
У меня же тоже на гифке один канвас это панелька, и она меньше всего ресурсов отъедает, так как ее не нужно так часто перерисовывать и ловить момент прихода нового бара.
Супер! Все летает!
А на низкой скорости обновляется без пропусков.Нашел правильные файлы. Где какие цифры, куда и когда на них смотреть - непонятно, но и и без этого невооруженным взглядом видно, что канвас значительно тормознутее, притом что используется не просто канвас вместо одной леблы, а один канвас вместо кучи лейблов.
Запускаем эксперт CanvasVsLabels.mq5, выбираем, тип дисплея outType, включаем limit_fps, устанавливаем, nIterations, он по умолчанию равен 10000. Этого достаточно, можно не менять. Тогда результаты будут схожи с представленными здесь: https://www.mql5.com/ru/forum/364640/page11#comment_21301589.
Теперь о результатах. Min delay, Mid delay и Max delay, это, минимальное, среднее и максимальное, значения задержек за один проход, соответственно. Total, это общее время за все количество nIterations проходов.
Еще раз, привожу таблицу результатов сравнения
Точно также замеры можно провести и в тестере, поскольку эксперт рассчитан на это. Но я их еще не проводил. Сделаю, когда будет свободное время. В дальнейшем планирую поэкспериментировать с дисплеем из множества БитмабЛейблов.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Canvas vs Labels
fxsaber, 2021.03.13 19:26
ЗЫ Такой результат только у меня?
Отъедает 15-20%. Видимо, тормозная видеокарта.
Оказалось, что ResourceReadImage очень медленная. Избавился от нее - стала нулевая нагрузка.
Еще раз публикую таблицу сравнения, но уже с гистограммами.
Сравнение средних значений задержки за один проход
Которые почему-то оказались несопоставимыми с общим временем работы (Total)...
Сравнение общего времени работы
Замеры показали, что дисплей на основе Canvas с ограниченным FPS (Canvas unlimited FPS) по производительности немного медленнее дисплея на основе Лейблов с ограниченным FPS (Labels unlimited FPS). Но в целом они оба подходят для вывода информации из высоконагруженных процессов.
Как запустить эксперта для выполнения замеров
Точно таким же образом эксперт может делать замеры в визуальном тестере. Только диапазон дат в настройках тестера нужно выставить таким образом, чтобы баров в истории было не меньше, чем значение входного параметра nIterations.
Больше информации, а также исходники можно найти в описание библиотеки Chart Display: https://www.mql5.com/ru/code/33898
Библиотека специально модифицированная для замеров: https://www.mql5.com/ru/code/download/33898/chartdisplay.mqh
Универсальный эксперт для выполнения замеров: https://www.mql5.com/ru/code/download/33898/canvasvslabels.mq5
Более подробно смотрите в КБ: https://www.mql5.com/ru/code/33898
Хотелось бы добавить более корректные замеры, сделанные с помощью нового эксперта в самое первое сообщение данной темы. Поскольку те замеры, что есть там на данный момент, некорректны. Но первое сообщение, к сожалению, уже отредактировать нельзя. Прошу модераторов добавить более корректные замеры в начало, а те что там сейчас есть оформить как неактуальные.
Оказалось, что ResourceReadImage очень медленная. Избавился от нее - стала нулевая нагрузка.
Запускаем эксперт CanvasVsLabels.mq5...
А смысл? Прям сейчас не охота копаться в кода. Как вычисляются эти показатели? Если уж так тестировать в тестере, то надо мерить общее время, затраченное на прогон и больше ничего, а не работу отдельных участков кода замерять. В крайнем случае инит не считать. И вот, без измерений видно, что канвас медленнее работает. Не знаю, может у меня аномалия какая...
Серьёзно?
С вызовом было где-то 15% нагрузка, без - нулевая.
А смысл? Прям сейчас не охота копаться в кода. Как вычисляются эти показатели? Если уж так тестировать в тестере, то надо мерить общее время, затраченное на прогон и больше ничего, а не работу отдельных участков кода замерять. В крайнем случае инит не считать. И вот, без измерений видно, что канвас медленнее работает. Не знаю, может у меня аномалия какая...
В коде копаться не охота. И поверить на слово тоже нет желания. :) Я прям не знаю, как вам объяснять. Рассказывать от начала до конца, как я писал весь код... Так это будет целая статья. :)
А в том, как эксперт делает замеры вообще нечего разбираться.
Total вычисляется по окончанию цикла, а min, mid и max в теле цикла, после display.push, display.setText и display.update. Ничего сложного, если посидеть и хорошенько всё рассмотреть, то можно добраться хоть до исходников Канваса и Лейблов. Там, кстати, тоже ничего сложного нет. Разве только за исключением методов, рисующих кривые Безье и им подобных, в Канвасе.И вот, без измерений видно, что канвас медленнее работает. Не знаю, может у меня аномалия какая...
При этом нужно сказать, при каких входных параметрах Канвас медленный. Если limit_fps: false, то тогда понятно "и к гадалке не ходи"... :)
Оказалось, что ResourceReadImage очень медленная. Избавился от нее - стала нулевая нагрузка.
Если читаете из сохраненного во время компиляции ресурса, то это надо делать однократно.
Ресурсы при компиляции сжимаются.