agner (44)


c++ - MSVCにおける奇数最適化問題

c++ - MSVCにおける奇数最適化問題

私はこのブログを見ました: http://igoro.com/archive/gallery-of-processor-cache-effects/ パート7の「奇妙さ」は私の興味を引いたものです。 私が最初に考えたのは「C#だけがおかしい」ということでした。 それは私が次のC++コードを書いたのではありません。 volatile int* p=(volatile int*)_al…


C++ベースのCOMアプリケーションで利用可能なパフォーマンスの問題と最適化戦略を探求する論文はありますか?

警告:これが適切なSOプログラミングの質問と見なされるかどうかわかりません。 主にドキュメントを処理するために何百万ものCOM呼び出しを行ったため、MS Office Suiteを使用しているときにパフォーマンスが大幅に低下しました。 問題の一部は、ネイティブアプリケーションのAPIを使用する代わりにOOXML SDKを使用することによって修正されました。 ただし、OOXML SDK自体がCO…


c++ - __builtin_prefetch、それはいくら読みますか?

を使用してC++( RK4)を最適化しようとしています__builtin_prefetch 構造全体をプリフェッチする方法がわかりません。 const void*addrがどれだけ読み取られるのかわかりません。 fromとto次の値が欲しいのですが。 for(int i=from; i<to; i++){double kv=myLinks[i].kv;…


c++ - CryENGINE 3ではブランチマスキングはどのように機能しますか?

CryENGINE SDKヘッダーのこの部分は私の注意を引いた: branchmask.h#ifndef__BRANCHLESS_MASK__#define__BRANCHLESS_MASK__///////////////////////////////////////////// helper functions for branch elimination//// m…


optimization - コンパイラは分岐情報に対して何ができますか?

現代のPentiumでは、プロセッサに分岐のヒントを与えることはもはや不可能です。 プロファイルガイド最適化を使用するgccのようなプロファイリングコンパイラが分岐動作の可能性に関する情報を取得すると仮定した場合、より高速に実行されるコードを生成するにはどうすればよいでしょうか。 私が知っている唯一の選択肢は、ありそうもない分岐を関数の最後に移動することです。 他に何かありますか? 更新。…


c++ - atoi()とatof()をキャッシュしますか? 彼らはより多くの回数呼ばれるより速く実行するようです

私は_rdtsc()を使って_rdtsc()と_rdtsc()時間をatoi()ましたが、かなり時間がかかることに気付きました。 したがって、私はこれらの関数の私自身のバージョンを書きました。それは最初の呼び出しからはるかに早くなりました。 Windows 7、VS2012 IDEを使用していますが、Intel C/C++コンパイラv13を使用しています。 私は-/ O3が有効になっ…


c++ - パフォーマンスのためにオブジェクトを設計する方法

最近物理エンジン開発についてのbook読んでいる間、私は今までに考えたこともない設計上の決定に出会いました。 これは、メモリ内の生バイトがCPUによってアドレス指定される方法に関連しています。 次のようなクラスを考えます。 class Foo{public: float x; float y; float z;/*…


c++ - ポストインクリメントよりもプレインクリメントを優先するほうが良いでしょうか。

クラスのオーバーロードされたポストインクリメントでは、インクリメント前のオブジェクトの状態を表す一時コピーを返す必要があるため、プリインクリメントが優先されることがよくありました。 私の古いC++コンパイラ(GCC 4.4.7)は、次の2つの関数を同じコードに最適化しているように思われるので、これはもはや深刻な問題ではないようです(インライン展開が行われている限り)。 class Int{…


Linux上のC++アプリケーションに「巨大な」ページを割り当てる方法

私はLinux上にC++アプリケーションを持っていますが、これは非常にレイテンシに敏感です。 私のメモリ使用量は約2GBなので、4kbページと64個のTLBエントリで、TLBミスが発生することになります。 Intelの開発者向けマニュアルで2MB(または4MB?)の "巨大な"ページはTLBエントリの数を半分に減らすだけなので、メモリ範囲の増加はTLBエントリの減少を相殺し、パフォーマンス…



performance - REPはどのようなセットアップを行いますか?

インテル ®64 およびIA-32アーキテクチャー最適化リファレンスマニュアルの引用 、§2.4.6「REP文字列の強化」: REP文字列を使用するパフォーマンス特性は、 起動オーバーヘッド とデータ転送スループットの2つのコンポーネントに起因する可能性があります。[...] より…




fog pdf optimization blog latency instruction c言語 言語 変換 x86