2011-01-26 12 views
6

誰も私に非常に低いレイテンシープログラミングを行う方法を学ぶための最良の方法についていくつかの指針を与えることができますか?私は多くのプログラミング本を持っていますが、非常に高速なコードを書くことに焦点を当てた(または助けた)ものは見たことがありません。または、本は最善の方法ではありませんか?レイテンシクリティカルで高速なC++/Java/C#コードを書く方法を学ぶ最も良い方法は?

専門家からのアドバイスをいただければ幸いです。

EDIT:私は、CPU /メモリにもっと関連していると思います。

+4

このコードは何ですか?コードIOがバインドされているか、またはCPUがバインドされていますか?あなたがデータベースを待っていて、もしあなたがしたいことがテキストファイルを書くことであれば、Google標準のファイルシステムを持っているということはありません。 –

+3

1つの言語の回答のみが書籍を受け取り、C++/Java/C#の回答を得ることを期待しています。だから私はあなたがいくつかの答えを期待する場合は、あなたの質問をconcertizeする必要がありますね。 –

+4

ステップ1:書き込みプログラム。ステップ2:パフォーマンスを測定する。ステップ3:パフォーマンスがゴミであれば、ホットスポットで最適化します。ステップ4に進みます。 –

答えて

4

私の助言は、 C++/Java/C#の仕組みを学び、それがどのようにマシンレベルの命令に変換されるのかを知ることです。いくつかの操作は他の操作より高価です。高水準の言語で書かれたコードスニペットは、多くの場合、多くの場合、あなたが思っている以上に多くの機械命令に変換されます。

また、さまざまなデータ構造、さまざまな問題サイズのパフォーマンス特性問題の正しいデータ構造を選択すると、実行速度が不思議になることがあります。

1

アセンブリを学習することから始めます。その後、Javaや.NETで作業する場合は、解釈されたバイトコードを学びます。これまでに得たことがあれば、作業している言語や作業しているコンパイラを理解する必要があります。そのパスを維持すれば、VC++とGCCの3つの演算子(?:)の両方で、一時的な値が生成され、等価なif文は生成されません。

その後、約10年後に、かなり良い低遅延コードを書くことができます。

残念ながら、これをすぐに知る方法はありません。 C++を学ぶ

良い本: 効果的なC++ より効果的なC++ 優れたC++

+1

+1:「約10年後に、低レイテンシーのコードを書くことができます。」仰るとおり。 –

+0

私は大学でARMアセンブリを学んだ(と非常に簡単にMIPS)あなたはインテルを学ぶことをお勧めですか? – Tom

+1

Intel PC用のコードを書く場合は、yesを入力します。それは、プロの開発者としてアセンブリコードを書いたことはめったにありません。それは、あなたがアセンブリをよく理解できるようになるには、より良いエンジニアになると言いました。 – Beanz

7

[C++プログラマ]:

超低遅延プログラミングは難しいです。人々が最初に道を始めるときに疑うよりもはるかに難しい。あなたが採用できるテクニックと "トリック"があります。 IO完了ポート、マルチコア使用率、高度に最適化された同期技術、共有メモリと同様。リストは永遠に続く。 (編集)堅牢で高速な優れたコードを書くことができますが、本当に超低レイテンシのコードではないので、 "code-profile-refactor-repeat"と同じくらい簡単です。

残念ながら、私が知っている単一のリソースはありません。これは、どのように完了したかを示します。超低レイテンシコードに特化したプログラマーは、ビジネスで最も経験が豊富なプログラマーです。そして正当な理由がある。低レイテンシーのプログラマになるための銀色の弾丸の解決策があるならば、それは単にこれです:あなたはのすべてについて多くを知っている必要があります。そしてその知識は来るのは簡単ではありません。何年(何十年?)の経験と絶え間ない研究が必要です。

限り研究自体に関しては、ここで私は1つの理由または別のために有用または特に洞察に満ちた数冊の本だ:

関連する問題