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

 
Renat Fatkhullin:

Это просто чистое доказательство на практике и в теории ошибочности позиции, которую высказывали некоторые трейдеры в теме https://www.mql5.com/ru/forum/96176/page10 (где-то было упоминание):

  • в R все библиотеки оптимизированы и максимально быстры
  • в R много оптимизаций, включая Intel Threading Building Blocks и тд


Оказалось, что это не так. В самой простой функции получился слив и MQL5 эффективнее. Причем, почему быстрее, я обосновал еще и теоретически. В дополнение к практическим результатам.

R даже официально зовётся "language and environment" - внутри фактически схема с её dsl,макросами,sexpr и мусором которая "клей" к разным либам и окружению..Зато компактная запись и всё это легко расширять, он собственно тем и хорош, за то и ценится. А ведь ещё не так давно апологеты мат.стат. пакетов с одной стороны и фаны ФП c другой стороны поносили R за тормоза :-)

PS. кстати есть подозрение что в микробенчмарке seq() развернулся уже внутри замеров. Мелочь конечно.

 
Maxim Kuznetsov:

R даже официально зовётся "language and environment" - внутри фактически схема с её dsl,макросами,sexpr и мусором которая "клей" к разным либам и окружению..Зато компактная запись и всё это легко расширять, он собственно тем и хорош, за то и ценится. А ведь ещё не так давно апологеты мат.стат. пакетов с одной стороны и фаны ФП c другой стороны поносили R за тормоза :-)

Да пусть как угодно зовется.

Просто утверждение про его оптимизированность оказалось ложным даже при условии, что у него масса функций сидит в нативных 64 битных DLL. Теперь мы наоборот везде будем указывать, что у нас мат расчеты быстрее, чем в R. И что перенос наработанных идей из R в MQL5 даст реальное преимущество.


PS. кстати есть подозрение что в микробенчмарке seq() развернулся уже внутри замеров. Мелочь конечно.

Нет, seq вне замера.

Попробуйте сами много раз вызвать после однократного заполнения через seq

res <- microbenchmark(a<-dbinom(k, n, pi/10, log = TRUE))
print(res)
 
Будучи теоретиком никогда бы не решился на спор с разработчиком-практиком, потому что будучи разработчиком-практиком в своей области, всегда смотрю со снисхождением на критику теоретиков.
 
Renat Fatkhullin:

В MQL5 считается в два раза быстрее: 10 микросекунд против 20 микросекунд в R.

У меня чуть иначе.
Среднее время: MT5 12 микросекунд, R 16 микросекунд
Минимальное: MT5 8 микросекунд, R 15 микросекунд

Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i7-6700  @ 3.40GHz
R - 3.3.1 x64
MT5 1445

Поздравляю, mql компилятор может хорошую оптимизацию.

 

<режим зануды>

К результатам MT5 стоит добавить 100 милисекунд потраченных на компиляцию.
R за 16 микросекунд успевает интерпретировать ввод из строки и передать его в библиотеку и получить результат назад.

</режим зануды> 

 
Dr.Trader:
<режим зануды>

К результатам MT5 стоит добавить 100 милисекунд потраченных на компиляцию.
R за 16 микросекунд успевает интерпретировать результат из строки и передать его в библиотеку и получить результат назад.

</режим зануды> 

Никак не стоит.

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


Минимальное время надо смотреть. По нему у вас прямое подтверждение моих результатов: 8 против 15.

 
Renat Fatkhullin:

Да пусть как угодно зовется.

Просто утверждение про его оптимизированность оказалось ложным даже при условии, что у него масса функций сидит в нативных 64 битных DLL. Теперь мы наоборот везде будем указывать, что у нас мат расчеты быстрее, чем в R. И что перенос наработанных идей из R в MQL5 даст реальное преимущество.


Нет, seq вне замера.

Попробуйте сами много раз вызвать после однократного заполнения через seq

совсем не факт..R - ФП, он может "опустить" значительную часть вычислений просто за ненадобностью, может сделать специфический вывод о пути вычисления. Просто несравниваемые вещи, как кислое с мягким :-)

 
Maxim Kuznetsov:

совсем не факт..R - ФП, он может "опустить" значительную часть вычислений просто за ненадобностью, может сделать специфический вывод о пути вычисления. Просто несравниваемые вещи, как кислое с мягким :-)

Хватит уже бред нести.

Раз за разом пытаетсь опровергнуть реальность.

 

я хоть и говорю о R, однако мой скилл вери смолл)) кто-то может проверить правильность кода?

library(microbenchmark)
library(compiler)
n <- 2000
k <- seq(0,n,by=20)
q<- function(xx) { dbinom(k, n, pi/10, log = TRUE) }
res <- microbenchmark(cmpfun(q))
print(res)


по результатам графики выходят одинаковые ,что у этого кода,




что у кода Рената


если код верен, то можете проверить бенчмарк?

 
Dr.Trader:

К результатам MT5 стоит добавить 100 милисекунд потраченных на компиляцию. 

Я к тому что mql компилятор во время компиляции уже знает все входные параметры. Ему достаточно во время компиляции всё посчитать, а при вызове скрипта - он просто возвращает уже заранее посчитанный результат. Видел какие-то статьи на хабре где сравнивали компиляторы на c++, там судя по анализу ассемблерного кода именно так происходит.

 
ivanivan_11:

если код верен, то можете проверить бенчмарк?

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

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