Тестирование нового компилятора MQL5 для x64 платформ - ускорение расчетов от 2 до 10 раз!
Молодцы!
Профессионалы своего дела!
Спасибо!
Еще в дополнение - в следующем релизе к 20 числам мая скорее всего будет доступен отладчик на исторических данных.
Как раз на iFX Expo показывать будем 26-28 мая.
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin:
- Новый 64 битный компилятор MQL5 быстрее текущего MQL5 от 2 до 10 раз
Разработка нового компилятора заняла очень много времени, но выигрыш оказался потрясающим. Есть вопросы к оптимизации строковых операций, но постараемся и их ускорить. - Новый компилятор вплотную приблизился к качеству и скорости компилятора Visual Studio 2012 x64
Мы еще не активировали все методы оптимизаций, так как пока занимаемся тестированием. Поэтому результаты еще улучшатся.
Еще в дополнение - в следующем релизе к 20 числам мая скорее всего будет доступен отладчик на исторических данных.
Как раз на iFX Expo показывать будем 26-28 мая.
Новый компилятор вплотную приблизился к качеству и скорости компилятора Visual Studio 2012 x64
Мы еще не активировали все методы оптимизаций, так как пока занимаемся тестированием. Поэтому результаты еще улучшатся.
Хорошая новость ! Отлично !
Renat Fatkhullin:
Возможность за то же самое время проводить больше расчетов и меньше задумываться о переходе на DLL. Особенно это важно для тех, кто занимается тяжелой математикой.
Да, реально я уже не могу придумать таких задач, в которых были бы необходимы внешние DLL.
Еще в дополнение - в следующем релизе к 20 числам мая скорее всего будет доступен отладчик на исторических данных.
А вот это - реально самая нужная фишка. За это - действительно огромное спасибо.
Лично у меня остается один вопрос - указатели на массивы. Для приватных массивов задача решается оборачиванием массива в класс.
Но вот для массивов, передаваемых в функцию OnCalculate() приходится каждый раз сперва копировать данные во внутренние буффера, а лишь потом передавать указатели внутрь объектов-анализаторов и обработчиков. Когда-то я пытался передавать указатели с использованием memcpy, но скорость почему-то была почти одинаковой, да и подобные "хитрости", на мой взгляд, не должны применяться.
Возможно, более приемлемым была бы возможность применение ссылочного типа. В целом задача - обращение к элементам массива без его копирования.
Да, реально я уже не могу придумать таких задач, в которых были бы необходимы внешние DLL.
Обнаружилось, что присвоение входного параметра полю deviation у экземляра структуры MqlTradeRequest приводит к ошибке генерации кода.
Гипотетический пример (всё остальное убрано):
sinput ulong deviation = 100; int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }Получаю "code generation error 1 1"
Если присвоить просто "100":
int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = 100; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }
...то компиляция пройдёт без ошибок. Обратите внимание, у меня процессор AMD Athlon II X4 645, 3.1 GHz. Быть может, это важно (буквально на этой неделе у MQL4 с сервисдеском вылавливали некий баг на AMD).
Ни на что другое компилятор у меня не ругается.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как мы и обещали ранее, выпускаем новый MQL5 компилятор, оптимизированный для 64 битной версии MetaTrader 5.
Мы сохранили полную совместимость генерируемого кода как для 32 битных версий терминала, так и для старых версий терминалов.
Уже сейчас на нашем демо сервере MetaQuotes-Demo можно обновиться до MetaTrader 5 build 1108, у которого доступен новый функционал. Чтобы включить режим нового оптимизирующего компилятора, надо прописать в metaeditor.ini в раздел [Experts] ключ Optimize=1:
Для тестирования производительности компиляторов MQL4, MQL5 и C++ использовались стандартные тесты компиляторов. Все исходные файлы приложены вместе с Excel таблицей результатов, так что каждый может перепроверить сам.
А пока посмотрим на результаты тестов в следующей среде:
Чтобы увидеть детальный график, кликните по нему, пожалуйста.
Какие выводы:
MQL5 быстрее MQL4 от десятков процентов до нескольких раз. Причина проигрыша в среде исполнения и 32 битах. У MetaTrader 5 гораздо более эффективная и постоянно развиваемая среда исполнения.
Разработка нового компилятора заняла очень много времени, но выигрыш оказался потрясающим. Есть вопросы к оптимизации строковых операций, но постараемся и их ускорить.
Мы еще не активировали все методы оптимизаций, так как пока занимаемся тестированием. Поэтому результаты еще улучшатся.
Что это дает трейдерам?
Возможность за то же самое время проводить больше расчетов и меньше задумываться о переходе на DLL. Особенно это важно для тех, кто занимается тяжелой математикой.