エラー、バグ、質問 - ページ 2162

 
Artyom Trishkin:
Enum は整数の列挙である。
0,1,2,3・・・などなど・・・。

関数テンプレートに

EnumToString()を使用します。

の問題が発生する...

 
Vladimir Pastushak:

関数テンプレートに

EnumToString()を使用します。

問題が発生する...

事例が必要です。
 
Artyom Trishkin:
事例が必要です。

オーバーロードをしたのですが、そのうちの1パターンが・・・。

フライとカツを切り離せるように...。

 
Vladimir Pastushak:

オーバーロードをしたのですが、そのうちの1パターンが・・・。

フライとカツを切り離せるように...。

フライは知ってる、カツも見たことある、でもファンクションコードがないと問題がわからない。
 
Renat Fatkhullin:

数学の最適化:sqrtの代わりに配列を使おうとする。

ということは、単純な配列からインデックスで要素を取り出すのは、非常に高速な操作になるはずですよね?

 
Комбинатор:

ということは、単純な配列からインデックスで要素を取り出すのは、非常に高速な操作となるはずですね。

シンプルな配列はどこにあるのでしょうか?

管理された言語の動的配列で、すべての制御の意味を持つものです。そして、sqrtはCPUのネイティブ命令1つです。


最適化の驚くべき発見と、各CPU世代、キャッシュサイズの違い、マルチタスク、ペナルティなど、それぞれのケースにおける要因の塊の影響について、ようこそ世界へ。

ほんの20年前、私は486プロセッサでアセンブラコードをいじり、命令の並べ替えやアライメント、単純なメモリの位置関係で数十パーセントも変わるスピードと格闘していた。おかしいと思ったが、後にIntelのマニュアルやVtuneでその絵が説明された。

しかし、今日の最適化 結果の状況は、とっくの昔に手に負えなくなっています。市場には、異なるキャッシュを持つ非常に多くのプロセッサがあり、コードの実行速度が異なることが保証されています。プロセッサのキャッシュとプロセッサのアーキテクチャは大きな影響を与えます。ベンチマークで数十%の差をなくすためには、CPUの動的周波数制御さえオフにしなければならない。

例えば、まともなアーキテクチャでキャッシュミスをしたように見えるAtomや、絞られたUモデルでは、単純なケースでも数倍低い結果を示すことが多いのです。キャッシュミスが増えてさようなら。

 
Artyom Trishkin:
フライは知っている、カツも見たことがある、でも問題はファンクションコードがないと見えてこない。
オーバーロードされた関数が文字列を持つ場合、それを整数で呼び出すと問題が発生する...。
 
Renat Fatkhullin:

シンプルな配列はどこにあるのでしょうか?

複雑さを設定するのに適したケースではないのです。配列はあらゆるところで使われ、指標では主要な計算部分となっていますが、あなたは今、配列の実装が遅いことをほぼ直接的に認めていることになるのです。

MQLコンパイラはC++に匹敵する速度のコードを生成すると言っておきながら、突然MQLの配列はまったく速くないことが判明するなど、一般ユーザーの立場からすると不思議に映りますね。
 
Комбинатор:

複雑な設定をするのは、正しいケースとは言えません。配列はあらゆるところで使われ、指標では主要な計算部分となっていますが、あなたは今、配列の実装が遅いことをほぼ直接的に認めていることになるのです。

直接の単一アセンブラコマンドと比較して?

はい、そうです。ご存じないようですが、プロセッサーには昔から、さまざまな数学的関数の計算済みテーブルが組み込まれているのです。そして高価なCPUの演算コマンドは、それらを使って高速化する。

月曜日には彼の例の詳細な分析を行い、正確な原因を突き止める予定です。
 
Renat Fatkhullin:

直接の単一アセンブラコマンドと比較して?

配列のインデックスは、せいぜいアセンブラの直接コマンド1つ分にしかなりません。

理由: