Скачать MetaTrader 5

Посмотрите на тест сравнения C++, MQL4, MQL5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes
Админ
25159
Renat Fatkhullin  

https://www.mql5.com/ru/forum/138805/page11#618767

Видно, что MQL5 отстает от С++ где-то в 5 раз, MQL4 от C++ в 50 раз, а MQL4 от MQL5 в 10 раз.

Новая версия MetaTrader 4 Client Terminal build 419 - MQL4 форум
  • www.mql5.com
Новая версия MetaTrader 4 Client Terminal build 419 - MQL4 форум
Yedelkin
4532
Yedelkin  

А показатель чего по вертикали?

MetaQuotes
Админ
25159
Renat Fatkhullin  
Yedelkin:

А показатель чего по вертикали?

Время в секундах.

Чем меньше затраченное время на задачу, тем быстрее язык.

Yedelkin
4532
Yedelkin  
Renat:

Время в секундах.

Чем меньше затраченное время на задачу, тем быстрее язык.

Понятно. 5 быстрее 4 в 10 раз на одной и то же задаче.
Sceptic Philozoff
Модератор
17844
Sceptic Philozoff  
Renat: Видно, что MQL5 отстает от С++ где-то в 5 раз, MQL4 от C++ в 50 раз, а MQL4 от MQL5 в 10 раз.

Тут, очевидно, все зависит от задачи. В данном случае попалась такая, на которой С++ намного быстрее.

В ветке об IPP на простенькой задаче вычисления πи разница между С++ и четверой была всего-то в 3.5 раза.

Ускоряемся - использование пакета IPP для увеличения скорости работы советника - MQL4 форум
  • www.mql5.com
Ускоряемся - использование пакета IPP для увеличения скорости работы советника - MQL4 форум
MetaQuotes
Админ
25159
Renat Fatkhullin  
Mathemat:

Тут, очевидно, все зависит от задачи. В данном случае попалась такая, на которой С++ намного быстрее.

В ветке об IPP на простенькой задаче вычисления пи разница между С++ и четверой была всего-то в 3.5 раза.

Да, тут в тесте простейший цикл, с которым С++ справился без проблем.

У себя в MQL5 мы еще не отладили агрессивную оптимизацию (она все еще отключена) и поэтому временно проигрываем. Сейчас все усилия идут на увеличение функционала. После уже доведем оптимизатор кода и получим кратное ускорение языка.

Nikolay Demko
12514
Nikolay Demko  
Renat:

Да, тут в тесте простейший цикл, с которым С++ справился без проблем.

У себя в MQL5 мы еще не отладили агрессивную оптимизацию (она все еще отключена) и поэтому временно проигрываем. Сейчас все усилия идут на увеличение функционала. После уже доведем оптимизатор кода и получим кратное ускорение языка.

Во, вспомнил, по поводу наращивания функционала...

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

например:

int a[4]={2,0,6,5};
int ind[];
ArraySort(a,ind);
//ind[0]=1; ind[1]=0; ind[2]=3; ind[3]=2; 
// таким образом запрашивая a[ind[3]] получаем 6

ЗЫ а то вы так заоптимизировали ArraySort что жаба давит, ни одна сортировка на MQL5 за ней не угонится.


Комбинатор
16101
Комбинатор  
Urain:

ЗЫ а то вы так заоптимизировали ArraySort что жаба давит, ни одна сортировка на MQL5 за ней не угонится.

Подозреваю что стандартная STL сортировка... Бинарную замути. Но скорее всего бесполезно.
Vladimir Gomonov
8292
Vladimir Gomonov  
Urain:

Во, вспомнил, по поводу наращивания функционала...

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

например:

ЗЫ а то вы так заоптимизировали ArraySort что жаба давит, ни одна сортировка на MQL5 за ней не угонится.

Я и так буду делать на mql5, ничего там сложного.  Другое дело если сделают на С++ и добавят как стандартную функцию. Тогда выигрыш будет ощутимым.

--

Если прямо тут перевести в подобие "техзадания", то нужна функция, на вход берущая массив и возвращающая второй массив (int), элементы которого являются индексами элементов входного массива, расположенными по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне разработчика никак не решаемо - виртуальных функций у них нет (т.е. юзерскую функцию Compare() не пришить), а "стандартное" отношение порядка не определено. 

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Виртуальные функции
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Виртуальные функции
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Виртуальные функции - Документация по MQL5
Nikolay Demko
12514
Nikolay Demko  
MetaDriver:

Я и так буду делать на mql5, ничего там сложного.  Другое дело если сделают на С++ и добавят как стандартную функцию. Тогда выигрыш будет ощутимым.

--

Если прямо тут перевести в подобие "техзадания", то нужна функция, на вход берущая массив и возвращающая второй массив (int), элементы которого являются индексами элементов входного массива, расположенными по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне разработчика никак не решаемо - виртуальных функций у них нет (т.е. юзерскую функцию Compare() не пришить), а "стандартное" отношение порядка не определено. 

Сложного ничего, просто проигрыш во времени.

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

Но реализовав то что я прошу, можно будет значительно ускорить и сортировку структур и объектов используя стандартную сортировку.

Vladimir Gomonov
8292
Vladimir Gomonov  
Urain:

Но реализовав то что я прошу, можно будет значительно ускорить и сортировку структур и объектов используя стандартную сортировку.

И каким же образом?  Подавать на вход копии ключей индексирования?  Тогда затраты на копирования ключей добавляются. И копировать их придётся на mql, а не на С++, что выглядит подозрительно (вроде как ненужный промежуточный тормоз).  Кароче - раз такой вумный, давай готовую реализацию на mql, мы его оттестим на скорость, если надо подрихтуем, а потом просто попросим разработчиков скомпилять на С++ и добавить в стандартную библиотеку. :)
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий