Ого! Первая версия, стабильно лучшая на всех процессорах (x86/AVX/AVX2).
Только наверное надо сделать скрипт для тестирования на правильность всех алгоритмов. Это просто, ИМХО. В цикле по датам сравнивать все результаты расчётов со встроенной функцией.
Alain Verleyen #: AVX2 медленнее, чем X64? Странно.
Подозреваю, что компилятор MQL применяет расширения AVX только к двойным значениям. Возможно, при компиляции через AVX-расширения управление памятью происходит иначе.
Возможно, оптимизатор пропускает некоторые x86-оптимизации, когда ищет AVX-оптимизации.
Было бы интересно получить заявление от MQ по этому поводу.
Вот это да! Первая версия, неизменно лучшая на всех процессорах (x86/AVX/AVX2).
Просто, наверное, стоит сделать скрипт для проверки корректности всех алгоритмов. Это просто, ИМХО. В цикле даты сравниваем все результаты вычислений со встроенной функцией.
Видимо, имеется в виду подмножество ISA, а не процессор...
BTW, процессоры AMD все еще поддерживают AVX512...
Хотя я не вижу в этом никакой пользы для задачи, которую мы пытаемся оптимизировать.
Однако мы могли бы попробовать сделать вычисления даты с использованием двоичных или плавающих чисел и посмотреть, сможем ли мы найти прирост производительности между различными подмножествами ISA.
Извините, я не проверил ваш конкретный процессор. - Intel убрала AVX512 в процессорах 12-го поколения из-за проблем с совместимостью с эффективными ядрами. - Но у AMD он все еще есть.
Я давно заметил, что с компилятором MQL при выполнении бенчмарков происходит что-то странное,
Если количество сравниваемых функций превышает определенный предел ?!, то вы не получаете правильных результатов (т.е. функции в конце mq5-файла получают лучшие результаты с наименьшим временем выполнения, а верхние функции - плохие результаты). Такое уже случалось со мной, поэтому лучше ограничить сравниваемые функции до 3/4 максимума. Если у кого-то есть объяснение этому странному явлению, пожалуйста, просветите меня.
Это произошло и здесь, когда версия Доминика была добавлена в файл скрипта бенчмарка.
Чтобы получить более наглядное представление, я просто сохранил в исходном коде только две функции, и вот мои результаты в сравнении:
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Немного более оптимизированная версия:
Результаты:
Немного более оптимизированная версия:
Результаты:
Немного более оптимизированная версия:
Ого! Первая версия, стабильно лучшая на всех процессорах (x86/AVX/AVX2).
Только наверное надо сделать скрипт для тестирования на правильность всех алгоритмов. Это просто, ИМХО. В цикле по датам сравнивать все результаты расчётов со встроенной функцией.
Отличный Доминик, вы смогли побить рекорд в 5 наносекунд в этом видео https://youtu.be/0s9F4QWAl-E?si=ZzdFCrFtU8Ean2NJ&t=590
Немного более оптимизированная версия:
Результаты:
AVX2 медленнее, чем X64? Странно.
Вот это да! Первая версия, неизменно лучшая на всех процессорах (x86/AVX/AVX2).
Просто, наверное, стоит сделать скрипт для проверки корректности всех алгоритмов. Это просто, ИМХО. В цикле даты сравниваем все результаты вычислений со встроенной функцией.
BTW, процессоры AMD все еще поддерживают AVX512...
Мой AMD Ryzen 3 PRO 3200GE - нет. Мне кажется, его поддерживают серверные процессоры, но я не интересовался.
AMD Ryzen 3 PRO 3200GE
Немного более оптимизированная версия:
Результаты:
Я давно заметил, что с компилятором MQL при выполнении бенчмарков происходит что-то странное,
Если количество сравниваемых функций превышает определенный предел ?!, то вы не получаете правильных результатов (т.е. функции в конце mq5-файла получают лучшие результаты с наименьшим временем выполнения, а верхние функции - плохие результаты). Такое уже случалось со мной, поэтому лучше ограничить сравниваемые функции до 3/4 максимума. Если у кого-то есть объяснение этому странному явлению, пожалуйста, просветите меня.
Это произошло и здесь, когда версия Доминика была добавлена в файл скрипта бенчмарка.
Чтобы получить более наглядное представление, я просто сохранил в исходном коде только две функции, и вот мои результаты в сравнении:
Одинаковая производительность, и обеим удалось опуститься ниже 5 наносекунд.