Не понимаю, почему сравнение было в Визуализаторе, а не в Терминале?
В код не всматривался. Для таких задач Канвас делается один на все "50 строк".
В Терминале замерил через Usage-библу. Существенной разницы методы не показывают.
Не понимаю, почему сравнение было в Визуализаторе, а не в Терминале?
Потому, что в Визуализаторе как раз и возникают проблемы с медленной скоростью Канваса. И Вы можете видеть, какие. Такой дисплей съедает больше 50% времени CPU, я об этом говорил выше! А в Терминале нужно было бы вызывать методы в цикле, чтобы всё увидеть. Но я не стал над этим заморачиваться. У меня в цикле работает эксперт с автономной оптимизацией, где, собственно и нужен такой дисплей с быстрым обновлением. Но сейчас я пока не готов его представить, так как проект еще не завершен.
В код не всматривался. Для таких задач Канвас делается один на все "50 строк".
Тогда посмотрите. Он там один!
Очень хочется мне нос утереть, да?
Я так и знал, что захотите что-то подобное сбацать. И знал, что будет подобная ЛАЖА.
Не умеете вы готовить сравнительные тесты.
Потому, что в Визуализаторе как раз и возникают проблемы с медленной скоростью Канваса. И Вы можете видеть, какие. Такой дисплей съедает больше 50% времени CPU, я об этом говорил выше! А в Терминале нужно было бы вызывать методы в цикле, чтобы всё увидеть. Но я не стал над этим заморачиваться. У меня в цикле работает эксперт с автономной оптимизацией, где, собственно и нужен такой дисплей с быстрым обновлением. Но сейчас я пока не готов его представить, так как проект еще не завершен.
Тогда посмотрите. Он там один!
Ну… если вы пишете только для визуализатора, то играйтесь в эти игры в одиночестве. Вы никогда не слышали о том, что любая графика, даже метки открытия\закрытия позиций тормозит работу визуализатора? Не¿
Постараюсь вам не мешать… создавайте отдельные лейблы для каждой буквы… и так-же отдельный ресурс…
Вводите народ в заблуждение.
Очень хочется мне нос утереть, да?
Я так и знал, что захотите что-то подобное сбацать. И знал, что будет подобная ЛАЖА.
Не умеете вы готовить сравнительные тесты.
Всё что я понял из Вашего поста, это слова "заблуждение", "ЛАЖА", "не умею готовить тесты". Правда, не понял, как они относятся к данной теме... Остальное, не понимаю от слова "совсем"! Когда я создавал данную тему, то хотел видеть здесь конструктивную критику, а не кучу непонятных претензий! Так что, потрудитесь объяснить свои слова. В противном случае, не пишите здесь ерунду!
Ну… если вы пишете только для визуализатора, то играйтесь в эти игры в одиночестве. Вы никогда не слышали о том, что любая графика, даже метки открытия\закрытия позиций тормозит работу визуализатора? Не¿
Постараюсь вам не мешать… создавайте отдельные лейблы для каждой буквы… и так-же отдельный ресурс…
Спешу сообщить вам, Алексей. Вы, конечно, склонны фантазировать, как и Николай... Но на самом деле всё не так как вы себе представляете. Просто, для разных задач нужны разные варианты решений. У вас и Николая будут замечания по существу?!
Всё что я понял из Вашего поста, это слова "заблуждение", "ЛАЖА", "не умею готовить тесты". Правда, не понял, как они относятся к данной теме... Остальное, не понимаю от слова "совсем"! Когда я создавал данную тему, то хотел видеть здесь конструктивную критику, а не кучу непонятных претензий! Так что, потрудитесь объяснить свои слова. В противном случае, не пишите здесь ерунду!
Терпение, мой друг, терпение.
Давайте. Только в коде сначала как следует разберитесь, потому как код это сложная штука, а мне нужны чётко аргументированные претензии!
Не понял. На первом изображении есть канвас, и на нём есть текст.
На последующих изображениях нет аналогичного текста на графике.
Т.е., а что тогда сравнивалось?
Давайте. Только в коде сначала как следует разберитесь, потому как код это сложная штука, а мне нужны чётко аргументированные претензии!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Представляю вниманию форумчан сравнение скорости работы дисплеев для вывода текста в чарт, созданных разными способами. Первый вариант дисплея я сделал с использованием класса CCanvas, второй вариант создал на лейблах (CChartObjectLabel). Все классы были взяты из стандартной библиотеки. Данная идея посетила меня, когда я создал дисплей на CCanvas и он существенно замедлял моего эксперта. В тоже время, некоторые программисты утверждали, что я ошибаюсь и CCanvas, а если быть точным, то OBJ_BITMAP_LABEL работает очень быстро, быстрее всех способов вывода информации в чарт, доступных в MetaTrader. Поэтому, я решил проверить это экспериментальным путем. Итак, момент истины.
Работа дисплея с выводом в CCanvas
Нагрузка на CPU при этом
Работа дисплея с выводом в CChartObjectLabel
Работа дисплея с выводом в CChartObjectLabel с включенным режимом оптимизации скорости работы (об этом расскажу ниже)
Теперь о значениях времени. Total, это общее время работы данного тестового эксперта. Min delay, Mid delay и Max delay - это периоды задержки на тиках. Но их почему-то не всегда удается корректно получить, хотя код проверял, ошибок нет. Думаю, всё дело в работе функции GetTickCount64 в тестере... Но это несущественная проблема. Главное, что общее время показывает.
Теперь расскажу коротко об оптимизации работы дисплея на лейблах. Дело в том, что чтобы текст появился на экране нужно вывести строки из специального массива строк в лейблы, которые расположены сверху вниз в количестве 50 штук. Но когда обновляется только последняя строка, то нет необходимости обновлять все лейблы, достаточно обновить только один лейбл, который соответствует этой строке. Включаем режим оптимизации (optimizeUpdate) и получаем прирост производительности более чем в 2 раза.
Я решил более подробно протестировать дисплей на лейблах, так как данный период тестирования для него слишком маленький, в силу скорости его работы. Поэтому, я увеличил период тестирования. И получил следующие результаты.
Без оптимизации optimizeUpdate: false
С оптимизацией optimizeUpdate: true
Добавил все результаты в Exscel
На первой гистограмме общее сравнение, на второй только вариант с лейблами.
Вывод: дисплей, созданный на CChartObjectLabel может работать быстрее в 83,7 раза, чем аналогичный на CCanvas. Не зря операции над пикселями принято считать наиболее затратными во всех программах!
Прилагаю таблицу с результатами тестирования. Исходники можно скачать в КБ: https://www.mql5.com/ru/code/33898