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

 

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:

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

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

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

 
Renat:

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

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

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

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

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

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

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

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

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

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

 
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 за ней не угонится.

 
Urain:

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

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

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

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

например:

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

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

--

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

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

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

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

--

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

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

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

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

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

 
Urain:

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

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