Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее" - страница 12

 
ivanivan_11:

если брался за аналог именно plot из R,то там вроде только статическая графика. если есть интерактивная графика,то это точно не plot  в прямом виде. я искал что-то такое там ради интереса,но были отсылки куда-то в сторону совместной работы с ява и т.п. 

К R относится только GraphPlot-функция (не метод). Сами классы никакого отношения к R не имеют и должны позволять интерактивность. Допилят.
 

Кажется, что одна вещь отсутствует: кластерный анализ.

(It seems that one thing is missing: the cluster analysis.)

 
На практике компилятор MQL5 языка оказался гораздо быстрее С++ реализаций функций в R
Если скомпилировать на C++ реализацию из R, то ее выполнение будет медленней, чем Ваша реализация на MQL5?
 
fxsaber:
Если скомпилировать на C++ реализацию из R, то ее выполнение будет медленней, чем Ваша реализация на MQL5?

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

Там на самом деле масса базовых мат функций скомпилирована на С/С++ компиляторе. Достаточно посмотреть исходный код.

 
Renat Fatkhullin:

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

Там на самом деле масса базовых мат функций скомпилирована на С/С++ компиляторе. Достаточно посмотреть исходный код.

А где посмотреть КАК Вы сравниваете скорость?
 
Renat Fatkhullin:

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

Там на самом деле масса базовых мат функций скомпилирована на С/С++ компиляторе. Достаточно посмотреть исходный код.

Так сама реализация на MQL5 алгоритмически отличается в лучшую сторону или MQL5-компилятор оказался быстрее C++?
 
СанСаныч Фоменко:
А где посмотреть КАК Вы сравниваете скорость?
Прочтите статью полностью. 
 

ОТЛИЧНАЯ СТАТЬЯ!

будем изучать.

+

 
Renat Fatkhullin:
Прочтите статью полностью. 

Прочитал.

Вник.

Считаю, что приведенные Вами тесты не совсем корректны. Считаю необходимым об этом написать, так как сравнения быстродействия не последние. 

Дело в том, что МКЛ качественно отличается от R. И в случаях сравнения быстродействия эти качественные различия должны учитываться там, где это возможно. R - интерпретатор, а МКЛ - компилятор. Это качественно различие для промышленных программ идет в плюс МКЛ.

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

Качественным отличием R от МКЛ состоит в том, что элементарным объектом в МКЛ является скаляр, из которых составляются более сложные объекты, например вектора. Именно вектора подаются на вход функций распределения.

В R вообще отсутствует понятие "скаляр". Простейшим объектом является вектор. R широко эксплуатирует это обстоятельство и в нашем примере по сравнению функций распределения в коде R совершенно явно просматривается такой прим программирования, специфичный для R, как "векторизация", что недоступно в МКЛ. Так как это специфический прием в R, который ускоряет вычисления 10-100 раз (в зависимости от размеров матрицы), то код для R должен был бы содержать именно этот прием. Применение векторизации очевидно, так как в тестах берется входной вектор и 100 раз производятся вычисления над ним, т.е. это матрица с одинаковыми, а можно сделать что с разными столбцами. 

 

Если обобщить сказанное: текст на R должен быть написан на R с использованием его возможностей, особенно при их отсутствии аналогов в МКЛ.

ПС.

Так речь идет о циклах, то R напрашивается загрузка ядер. Но это оставим за скобками.  

 
СанСаныч Фоменко:

Прочитал.

Вник.

Считаю, что приведенные Вами тесты не совсем корректны. Считаю необходимым об этом написать, так как сравнения быстродействия не последние. 

Дело в том, что МКЛ качественно отличается от R. И в случаях сравнения быстродействия эти качественные различия должны учитываться там, где это возможно. R - интерпретатор, а МКЛ - компилятор. Это качественно различие для промышленных программ идет в плюс МКЛ.

Вы посмотрите в исходный код R (он ведь опенсорсный). Там вся базовая математика на C/C++ вкомпилирована в движок. И большинство пакетов тоже написаны на С++, иначе результатов вычислений не дождешься.

Если бы R был интерпретатором в базовых/системных функциях, он бы отставал от MQL5 в 200-500 раз. Мы специально тестировали системные C/C++ функции R, а не строили ручную обработку в циклах (там мгновенный проигрыш в сотни раз у R).

В R разработках постоянно идет поиск "как бы мне пакет найти, чтобы не писать for/while/foreach цикл". Фактически есть только один метод ведения расчетов в R - это передача любых более-менее массивных расчетов в сторонние пакеты.


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

Качественным отличием R от МКЛ состоит в том, что элементарным объектом в МКЛ является скаляр, из которых составляются более сложные объекты, например вектора. Именно вектора подаются на вход функций распределения.

Посмотрите в /include/math/stat каталог на сотни векторных функций.


В R вообще отсутствует понятие "скаляр". Простейшим объектом является вектор. R широко эксплуатирует это обстоятельство и в нашем примере по сравнению функций распределения в коде R совершенно явно просматривается такой прим программирования, специфичный для R, как "векторизация", что недоступно в МКЛ. Так как это специфический прием в R, который ускоряет вычисления 10-100 раз (в зависимости от размеров матрицы), то код для R должен был бы содержать именно этот прием. Применение векторизации очевидно, так как в тестах берется входной вектор и 100 раз производятся вычисления над ним, т.е. это матрица с одинаковыми, а можно сделать что с разными столбцами. 

Нет никакой векторизации и никаких современных возможностей в R. Там код просто в лоб написан обычными джуниорами от программирования. Да, математики они приличные, но вот программисты посредственные.

GPU в R остаются исключительно сказками и единичными попытками в редчайших пакетах. 


Если обобщить сказанное: текст на R должен быть написан на R с использованием его возможностей, особенно при их отсутствии аналогов в МКЛ.

Вы просто не знаете ни R, ни MQL5.

Вы не смотрели исходники R, не знаете исходников MQL5. Не строили компиляторов последние 15 лет. Но пытаетесь спорить с теми, кто это все сделал.

Причина обращения: