Ошибки, баги, вопросы - страница 2162

 
Artyom Trishkin:
enum - это целочисленное перечисление.
0,1,2,3 ..., и т.д. ...

Если в шаблоне функции есть 

EnumToString();

Возникают проблемы...

 
Vladimir Pastushak:

Если в шаблоне функции есть 

EnumToString();

Возникают проблемы...

Пример нужен.
 
Artyom Trishkin:
Пример нужен.

я сделал перегрузку одной из которых стал шаблон...

так я смог разделить мух от котлет...

 
Vladimir Pastushak:

я сделал перегрузку одной из которых стал шаблон...

так я смог разделить мух от котлет...

Мух знаю, котлеты видел, а вот в чём проблема - не видно без кода функции.
 
Renat Fatkhullin:

Оптимизация математики: попытка использовать массивы вместо sqrt.

так взятие элемента по индексу у простого массива должно быть очень быстрой операцией, разве нет?

 
Комбинатор:

так взятие элемента по индексу у простого массива должно быть очень быстрой операцией, разве нет?

Где вы видите простой массив?

Это динамический массив управляемого языка со всеми вытекающими последствиями на контроль. А sqrt - одиночная нативная команда процессора.


Добро пожаловать в мир удивительных открытий оптимизаций и влияния массы факторов в каждом конкретном случае в каждом поколении проца, каждой разнице размеров кешей, мультазадачности, штрафов и тд.

Еще 20 лет назад я занимался вылизыванием ассемблерного кода на 486 процессоре и боролся с постоянно плавающими на десятки процентов скоростями от перестановки команд, выравнивания и просто положения в памяти. Казалось сумашедшим, но мануалы интеловские и Vtune впоследствии объясняли картину.

А вот сегодня ситуация с результатами оптимизаций давно вышла из-под контроля. На рынке такое разнообразие совершенно разных процессоров с разными кешами, что ваш код будет гарантированно исполняться с разной скоростью. Огромное влияние оказывают кеши процессоров и архитектура процессора. Даже динамическое управление частотой проца приходится отключать, чтобы убрать разницу в десятки процентов на бенчмарке.

Например: Атомы с зарезанными кешами вроде бы на приличной архитектуре или придушенные U модели часто показывают кратно ниже результаты даже на простых случаях. Больше cache miss’ов и досвидания.

 
Artyom Trishkin:
Мух знаю, котлеты видел, а вот в чём проблема - не видно без кода функции.
Если в перегруженной функции есть енум то стринг то при вызове её для интегера возникает проблема... 
 
Renat Fatkhullin:

Где вы видите простой массив?

Не подходящий случай выставлять сложность. Массивы же используются везде, в индикаторах это основная расчетная часть, и вы сейчас практически напрямую признаете что реализация массивов у вас медленная.

Я верю что вы на порядок лучше разбираетесь в оптимизациях, но с точки зрения простого юзера все выглядит немого странно -- вы заявляете что MQL компилятор генерирует код сравнимый по скорости с С++, но тут вдруг выясняется, что массивы в MQL нифига не быстрые.
 
Комбинатор:

Не подходящий случай выставлять сложность. Массивы же используются везде, в индикаторах это основная расчетная часть, и вы сейчас практически напрямую признаете что реализация массивов у вас медленная.

По сравнению с прямой одиночной ассемблерной командой?

Да, запросто. Вы не в курсе, что в процессорах давно уже встроили предрасчитанные таблицы разнообразных математических функций. И дорогие математические команды cpu ими пользуются для ускорения.

В понедельник проведем детальный анализ его примера и выясним точную причину.
 
Renat Fatkhullin:

По сравнению с прямой одиночной ассемблерной командой?

индекс массива в лучшем случае тоже сводится к прямой одиночной ассемблерной команде, так что вопрос остается в силе

Причина обращения: