Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Каюсь, был неправ. Производительность битмапа уступает меткам на 16%-25% (в зависимости от числа элементов), но не на порядок, как писал ранее.
Вероятно, при первом освоении инструмента в коде были ошибки/неэффективности.
Код прилагаю.
tol64
Поверьте, у меня нет ни единого мотива обманывать Вас = себя. В первом моём эксперименте я наблюдал битмап в тестере. К сожалению, воспроизвести не получается. :(
...
tol64
Поверьте, у меня нет ни единого мотива обманывать Вас = себя. В первом моём эксперименте я наблюдал битмап в тестере. К сожалению, воспроизвести не получается. :(
Хотелось бы также обратить внимание разработчиков на различия в отображении шрифтов:
Слева - битмап, справа - метки. У битмапа отрисовка шрифта чуть более жирновата, хотя все настройки одинаковы.
Вопрос не критичный. Но для порядку обратить внимание надо. :)
Хотелось бы также обратить внимание разработчиков на различия в отображении шрифтов
Слева - битмап, справа - метки. У битмапа отрисовка шрифта чуть более жирновата, хотя все настройки одинаковы.
Вопрос не критичный. Но для порядку обратить внимание надо. :)
Каюсь, был неправ. Производительность битмапа уступает меткам на 16%-25% (в зависимости от числа элементов), но не на порядок, как писал ранее.
нет. все же у вас тест некорректен.
Вы используете ChartRedraw после каждого изменения. То есть фактически вы тестируете 10000 раз ChartRedraw. Это неверно.
Задача ведь - узнать что модифицируется быстрее - метки или битмап. А не их последующий вывод на чарт.
вот результаты теста если оставить ChartRedraw внутри цикла.
Время обновления битмапа=40980.
Время обновления меток = 41777.
(то есть битмап даже чуток быстрее, чем метки)
Причем хочу вам заметить, что от количества меток и ширины битмапа при наличии ChartRedraw внутри цикла - ничего не зависит. То есть функция ChartRedraw - самая медленная в данной ситуации.
---
Если же убрать ChartRedraw из цикла, то получим абсолютно другие цифры
Время обновления битмапа=5788.
Время обновления меток = 234.
то есть терминал с меткам работает в 20 раз быстрее битмапа
и тут конечно уже можно видеть зависимость высоты битмапа. для 100 меток:
Время обновления битмапа=51355.
Время обновления меток = 1108.
разница в 50 раз
а вот вам битмап - размером 250*20. то есть координаты меток не меняем. просто вывод всей сотни в одну точку.
получим
Время обновления битмапа=25054.
разница с сотней меток в 25 раз.
То есть как видите битмап реально медленная особа, что касается работы с ней. процесс рисования медленный.
однозначно, что постоянная цикличная работа с массивами + WinGdi TextOut + создания ResourceCreate = уступает родным объектам МТ минимум на порядок, а то и в 50 раз.
поэтому от МТ объектов отказываться никак нельзя. НО и про битмап забывать тоже нельзя. Так как он вероятно будет очень удобен для рисования графиков и гистограмм.
А какой Флаг для задания толщины шрифта Вы использовали для битмапа ?
По-умолчанию - 0, я его не задаю явно. В приложенных исходниках это видно.
Дополнительная "игра" с разными флагами также не привела к получению единообразия.
...
Задача ведь - узнать что модифицируется быстрее - метки или битмап. А не их последующий вывод на чарт.
...
Удаление из цикла функции ChartRedraw() - некорректно, ибо "атомарная операция" изменения свойства текстовой метки никак не обрабатывается видео-движком терминала.
Только при вызове ChartRedraw() происходит отрисовка всего окна, включая взаимные наложения изображений с альфа-каналом от разных объектов.
Эту гипотезу строго подтверждает профилировщик кода на скрипте с текстовыми метками.
Что касается битмапа, то "узкое горлышко" в нём - функция TextOut().
...
Что касается битмапа, то "узкое горлышко" в нём - функция TextOut().
Вот так наглядней будет: ))
Вот так наглядней будет: ))
Согласен. :)
...
вот результаты теста если оставить ChartRedraw внутри цикла.
Время обновления битмапа=40980.
Время обновления меток = 41777.
(то есть битмап даже чуток быстрее, чем метки)
Странно, у меня обратная картина:
Argb_normalize лучше не использовать, так как это дает дополнительные расходы на нормализацию цвета. Лучше рисовать чистым цветом простые вещи.
Еще на скорость прямо и сильно влияет видеокарта, так как мы вовсю пользуемся ее 2D функциями. Например, на слабых ноутбуках с простейшими видеокартами отрисовка медленная и разница в методах вывода большая.