Ошибки, баги, вопросы - страница 2162
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
enum - это целочисленное перечисление.
Если в шаблоне функции есть
EnumToString();
Возникают проблемы...
Если в шаблоне функции есть
EnumToString();
Возникают проблемы...
Пример нужен.
я сделал перегрузку одной из которых стал шаблон...
так я смог разделить мух от котлет...
я сделал перегрузку одной из которых стал шаблон...
так я смог разделить мух от котлет...
Оптимизация математики: попытка использовать массивы вместо sqrt.
так взятие элемента по индексу у простого массива должно быть очень быстрой операцией, разве нет?
так взятие элемента по индексу у простого массива должно быть очень быстрой операцией, разве нет?
Где вы видите простой массив?
Это динамический массив управляемого языка со всеми вытекающими последствиями на контроль. А sqrt - одиночная нативная команда процессора.
Добро пожаловать в мир удивительных открытий оптимизаций и влияния массы факторов в каждом конкретном случае в каждом поколении проца, каждой разнице размеров кешей, мультазадачности, штрафов и тд.
Еще 20 лет назад я занимался вылизыванием ассемблерного кода на 486 процессоре и боролся с постоянно плавающими на десятки процентов скоростями от перестановки команд, выравнивания и просто положения в памяти. Казалось сумашедшим, но мануалы интеловские и Vtune впоследствии объясняли картину.
А вот сегодня ситуация с результатами оптимизаций давно вышла из-под контроля. На рынке такое разнообразие совершенно разных процессоров с разными кешами, что ваш код будет гарантированно исполняться с разной скоростью. Огромное влияние оказывают кеши процессоров и архитектура процессора. Даже динамическое управление частотой проца приходится отключать, чтобы убрать разницу в десятки процентов на бенчмарке.
Например: Атомы с зарезанными кешами вроде бы на приличной архитектуре или придушенные U модели часто показывают кратно ниже результаты даже на простых случаях. Больше cache miss’ов и досвидания.
Мух знаю, котлеты видел, а вот в чём проблема - не видно без кода функции.
Где вы видите простой массив?
Не подходящий случай выставлять сложность. Массивы же используются везде, в индикаторах это основная расчетная часть, и вы сейчас практически напрямую признаете что реализация массивов у вас медленная.
Я верю что вы на порядок лучше разбираетесь в оптимизациях, но с точки зрения простого юзера все выглядит немого странно -- вы заявляете что MQL компилятор генерирует код сравнимый по скорости с С++, но тут вдруг выясняется, что массивы в MQL нифига не быстрые.Не подходящий случай выставлять сложность. Массивы же используются везде, в индикаторах это основная расчетная часть, и вы сейчас практически напрямую признаете что реализация массивов у вас медленная.
По сравнению с прямой одиночной ассемблерной командой?
Да, запросто. Вы не в курсе, что в процессорах давно уже встроили предрасчитанные таблицы разнообразных математических функций. И дорогие математические команды cpu ими пользуются для ускорения.
В понедельник проведем детальный анализ его примера и выясним точную причину.По сравнению с прямой одиночной ассемблерной командой?
индекс массива в лучшем случае тоже сводится к прямой одиночной ассемблерной команде, так что вопрос остается в силе