Ошибки, баги, вопросы - страница 2667
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Оказывается, профайлер для проекта скрипта отображает результат только в случаи выключенной оптимизации, если оптимизация включена - все запустится, отработает, но без какого-либо результата.
Баг МТ5 (build 2345) долго не мог понять почему профайлер запускается, отрабатывает, но результаты ни где не отображаются.
Оказывается, профайлер для проекта скрипта отображает результат только в случаи выключенной оптимизации, если оптимизация включена - все запустится, отработает, но без какого-либо результата.
Профайлер отрабатывает не для всех индикаторов (без оптимизации). Дважды написал об этом на форуме, скинул в ЛС разработчикам код - нет ответа.
грубо говоря, интересовало почему два алгоритма, дающих в конечном итоге один и тот же результат, выполняются с разной скоростью, просадка в 1.7 раза в режиме оптимизации.
В результате был получен практический опыт работы с профайлером МТ5 и обнаружено ряд дефектов в его работе.
Так как не понятно, интересует ли разработчиков эта информация, а тратить часы собственно времени для локализации багов ни какого желания нет, то будет предоставлена лишь краткая информация по обнаруженным проблемам:
1) Нет возможности сравнивать скорости разных алгоритмов.
Так алгоритм, который в три раза быстрее остальных, как с включенной оптимизацией так и без, в профайлере может оказаться самым медленным.
Видимо идет какой-то оверхед со стороны профайлера, который влияет на время выполнение алгоритмов, в данном случаи сравнивать скорости выполнения алгоритмов в профайлере не имеет ни какого смысла.
2) Некорректное значение Count в сплывающих подсказках гистограмм на экране.
Профайлер пишет, что функция запускалась 80К раз, а не 20К как ожидалось, аналогично внутри функции для разных строк идет превышение Count в разы, для одних строк в три раза, для других в два.
3) Некорректное значение Time в сплывающих подсказках гистограмм на экране.
Имеются случаи, когда профайлер показывает, что алгоритм заходил в условие 99.90% раз по времени, а в действительности оказывается, что только один раз из 20К проходов.
Это скорее не баг, а замечание!
мт 5 билд 2340.
Вчера открыв Каталог данных не заметил как папка Indicators переместилась в папку Experts. Потом выключил мт5 и уже сегодня включил, индикаторы также можно использовать из Навигатора, как ни в чем не бывало. Но, если обратно открыть Каталог данных то там появится пустая папка Indicators и если уже в нее кинуть какой-то индикатор. То он уже не появится в Навигаторе. Возврат папки Indicators обратно в MQL5\Indicators решает проблему.
МТ5 (build 2347) Почему такой большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, если память для них была заранее зарезервирована?
Прошу рассмотреть возможность улучшения внутреннего алгоритма резервирования с помощью ArrayResize.
Например, для классов можно припустить, что они кроме вызова конструктора выполняют некую "внутреннюю регистрацию в списках".
И в рамках резервирования с помощью ArrayResize, кроме непосредственного выделения памяти, можно попробовать оптимизировать процесс:
- брать данные из соседнего созданного элемента (например указатель на таблицу виртуальных функций);
- заранее выполнять или резервировать место под "внутреннюю регистрацию" классов, которые еще не созданы;
МТ5 (build 2347) Почему такой большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, если память для них была заранее зарезервирована?
Даже такое не помогает.
Ерунда какая-то. Вместо ускорения тормоза.
ЗЫ Странно, результат выполнения примера из Документации нулевой.
Поработал с профайлером в МТ5 (build 2345),
грубо говоря, интересовало почему два алгоритма, дающих в конечном итоге один и тот же результат, выполняются с разной скоростью, просадка в 1.7 раза в режиме оптимизации .
...
МТ5 (build 2347) Почему такой большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, если память для них была заранее зарезервирована?
Если вы хотите сравнить, это должно быть:
Если вы хотите сравнить, это должно быть:
С моей стороны сравнивалось то, что должно было быть.
Мне известно сколько элементов будет помещено в массив и вместо того, что бы создавать их все сразу - резервирую память под несозданные.
Проблема в том, что если резервирую память, а создаю элементы массива по одному, то это требует в разы больше времени, чем просто создать все сразу.
Так для стуктур - это в 7 раз медленнее.
А для типов данных класс и int - в два раза медленнее.
Это очень большая разница, которую, как мне кажется, при желании разработчики могут устранить.