記事"R で 統計分布を MQL5 に -"についてのディスカッション - ページ 6

 
Renat Fatkhullin:

これは、https://www.mql5.com/ru/forum/96176/page10(どこかで言及があった)のトピックで一部のトレーダーが表明した立場の誤りを、実践と理論で純粋に証明したに過ぎない:

  • Rのライブラリはすべて最適化されており、可能な限り高速である。
  • インテル・スレッディング・ビルディング・ブロックなど、Rには多くの最適化がある。


これは真実ではないことがわかった。最も単純な関数では、それは無駄であり、MQL5の方が効率的であることが判明した。さらに、理論的になぜMQL5の方が速いのかを実証した。実用的な結果に加えて。

Rは公式には "言語と環境 "と呼ばれているが、その中身はdsl、マクロ、sexprと、さまざまなライブラリや環境に "接着 "するゴミのようなスキームである。少し前までは、mat.stat.パッケージの擁護者とFPのファンが、Rのブレーキについて非難していました。)

PS.ところで、マイクロベンチマークではseq()がすでに測定値の中に導入されている疑いがある。もちろん、些細なことである。

 
Maxim Kuznetsov:

Rは公式には「言語と環境」と呼ばれているが、その中身はdsl、マクロ、sexpr、そしてさまざまなライブラリや環境に「接着」するゴミのようなスキームである。少し前までは、mat.stat.パッケージの擁護者とFPのファンが、Rのブレーキについて非難していました。)

好きなように言わせておけばいい。

ただ、64ビットのネイティブDLLに多くの関数があったとしても、その最適化に関する声明が誤りであることが判明しただけだ。私たちの行列計算がRよりも高速であることは、どこでも指摘できるだろう。そして、RからMQL5への開発アイデアの移転は、真のアドバンテージをもたらすだろう。


PS.ところで、マイクロベンチマークでは、seq()がすでに測定値の中に導入されている疑いがある。もちろん些細なことだ。

いや、seqは計測の外側にある。

seq()を使って1回フィルした後、自分で何度も呼び出してみてほしい。

res <- microbenchmark(a<-dbinom(k, n, pi/10, log = TRUE))
print(res)
 
理論家である私は、開発者である実践者と議論する勇気はない。なぜなら、私の分野では開発者である実践者である私は、理論家の批判を常に見下した目で見ているからだ。
 
Renat Fatkhullin:

MQL5では、Rの20マイクロ秒に対して10マイクロ秒と、2倍の速さでカウントされる。

私は少し違います。
平均時間: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コンパイラーは良い最適化ができる。

<nerd mode.

MT5の結果に、コンパイルに費やした100ミリ秒を追加してください。
Rは16マイクロ秒で文字列からの入力を解釈し、それをライブラリに渡して結果を返すことに成功している。

</ オタクモード

 
Dr.Trader:
< オタクモード

MT5の結果に、コンパイルに費やした100ミリ秒を追加する必要がある。
R は文字列から結果を解釈し、それをライブラリに渡して結果を返すのに16マイクロ秒かかります。

</オタクモード>.

そんなことはない。

私もRで最適化されるべきだと信じていた。でも、自分でインストールして、自分で理解し始めて、このシステムは動的言語のシステム・オーバーヘッドのせいで最大値を絞り出すことができないことに絶対に気づいたんだ。


最短時間を見るべきだ。私の結果は、8対15で直接確認できる。

 
Renat Fatkhullin:

好きなように呼んでください。

ただ、ネイティブの64ビットDLLに多くの関数があったとしても、その最適化に関する記述は誤りであることが判明しただけだ。私たちの行列計算がRよりも高速であることは、どこでも指摘できるだろう。そして、 RからMQL5に開発されたアイデアを移行することで、本当のアドバンテージが得られるだろう


いいえ、seqは測定外です。

seqで1回充填した後、自分で何回もコールしてみてください。

RはFPであり、計算の重要な部分を単に不要だからという理由で "省略 "することもできるし、計算経路について特定の結論を出すこともできる。酸いも甘いも噛み分けたようなものだ。)

 
Maxim Kuznetsov:

RはFPであり、単純に不必要な計算の重要な部分を "省略 "することもできるし、計算の経路について特定の推論を行うこともできる。酸いも甘いも一緒くたにしたようなものだ。)

ナンセンスはもうたくさんだ。

何度も何度も現実を否定しようとしている。

 

私は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)


結果はこのコードと同じグラフを示しています、




とRenateのコードで同じグラフが表示されます。


もしコードが正しければ、ベンチマークをチェックしてもらえますか?

 
Dr.Trader:

MT5の結果に、コンパイルにかかった100ミリ秒を追加してください。

つまり、mqlコンパイラーはコンパイル中にすべての入力パラメーターをすでに知っているのです。コンパイル中にすべてを計算し、スクリプトを呼び出すときには、事前に計算された結果を返すだけで十分です。ハブの記事でc++コンパイラが比較されているのを見たことがあるが、アセンブラ・コードの解析から判断すると、まさにそこで起こっていることだ。

 
ivanivan_11:

もしコードが正しければ、ベンチマークをチェックしてもらえますか?

最初のテストでは結果はマイクロ秒でしたが、ここではミリ秒になっています。