Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Справочник MQL5 доступен на 8 языках. Изучай MQL5 на удобном тебе языке!
MetaQuotes
Админ
24812
Renat Fatkhullin 2012.04.06 18:46 

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 2012.04.06 18:57  

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

MetaQuotes
Админ
24812
Renat Fatkhullin 2012.04.06 19:10  
Yedelkin:

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

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

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

Yedelkin
4532
Yedelkin 2012.04.06 19:16  
Renat:

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

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

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

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

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

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

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

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

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

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

Nikolay Demko
12445
Nikolay Demko 2012.04.06 20:08  
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 за ней не угонится.


Комбинатор
15753
Комбинатор 2012.04.06 21:56  
Urain:

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

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

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

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

например:

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

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

--

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

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

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

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

--

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

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

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

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

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

Vladimir Gomonov
8272
Vladimir Gomonov 2012.04.06 23:04  
Urain:

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

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