MSDN "Writing Faster Managed Code: Know What Things Cost"はかなりいいですが、2003年にCLR v1用に書かれました。このバージョンの更新版はありますか?「より速い管理コードを記述する:最新のものを知る」の更新版がありますか?
答えて
これを置き換えるものはわかりませんが、CLR via C#は、CLRの仕組みや時間とリソースを多く消費する深い知識を提供します。
私はそうは思わないし、更新されたバージョンがそれほど違うとは思わない。
タイミングの数値は、試験機がおそらくより早く、より高速になることがありますが、テストの関係はほぼ同じです。
この記事は、管理されたコードでの一般的な操作の低レベルの影響についてのものであり、Articeが書かれてからあまり変わっていません。新しいバージョンのフレームワークには多くの機能が追加されていますが、それはすべてC#1.0以降で使用可能なプリミティブに基づいています。
いいえ、私はそれを更新したことはありませんが、適切な塩の穀物で取ったと思います。記事の一般的なアドバイスと大部分のルールは、今日でもうまくいきます。 (生成されたコードが変更され、そしてどのようにマイクロプロセッサがどのように変わったか、どのように変化したかを原始時代見るために、今日の実験を繰り返すように興味深いものになるだろう、と述べた。)
最もプリミティブの相対的なオーバーヘッドが勝っ
多くは変わったが、一部は劇的に変わっただろう。たとえば、非静的デリゲートの呼び出しの劇的な改善が劇的に改善されました(正しくリコールすれば.NET 2.0で)。私は、2003年に非常に高額であると報告したため、今日の開業医が呼び出すのを避けるために彼女の方法から脱却するとは思っていません。
多くのコンパイルされたコードシーケンスが変更されていると思います。新しいJITコンパイラの最適化が行われます(マイクロベンチマークではあまりうまく表示されません)。 JIT'dとNGENコードの別の組み合わせ(NGENは私の記事では探究されませんでした)。ガベージコレクタのような主要なサブシステムは長年にわたり絶えず調整されてきました。
メモリシステムエフェクトが個々のマネージコードプリミティブ操作のコストを無駄にする可能性について、私は注意深くアドバイスします。また、多くの変更点があります。たとえば、03-04の多くのCLRパフォーマンス作業は、NGENのシステムアセンブリの作業セットの動作を改善しました(汚いプライベートページの最小化など)。
もちろん、この記事のテーマは、あなたのコードのパフォーマンスを注意深く、注意深く測定することが不可欠であり、そのテーマは時代を超越しています。
ちなみに、私はいつもトップ200にすぎない.NET BCLメソッドの予想される/典型的な時間とスペースのコストについてのフォローアップ記事を作成したいと思っていました。我々が.NETのパフォーマンスに取り組んでいることが分かった。それは、実際の実践者が野生で実際に使用しているように、クラスライブラリ/フレームワークの経験的なパフォーマンスをどのように特徴付けるかについて、非常に興味深い考えを導きました...
それを読んでくれてありがとう、 。
p.s.
- 1. ローカルストレージデータを更新するためのjavascriptコードの記述方法
- 2. 1つのトランザクション内でDBを更新する管理コードとunamangedコードはありますか?
- 3. OpenTKのマニュアルの更新版はありますか?
- 4. Kunderaチュートリアルの最新版はどこにありますか?
- 5. opencartを新しいバージョンにアップグレードする場合、プラグインとコードも更新する必要がありますか?
- 6. MemCached for Windowsの更新版はどこにありますか?
- 7. 残りの管理者のリストビューを更新する方法
- 8. 速いtest1のテストよりも高速である理由
- 9. Acumatica処理画面ARTranカスタムフィールドを更新するカスタムテーブルフィールドも更新する必要があります
- 10. 新しい管理リリースページでアルファ版とベータ版のテストリストを再生する
- 11. 最新のEclipseで古いAndroidプロジェクトを開く際のマニフェストのエディタ記述子がありません
- 12. コントローラ/ビジネスでも記述できるビューにC#コードを記述すると、パフォーマンスにどのような影響がありますか?
- 13. 次のような記述方法がありますか?
- 14. バージョン更新後のソナタ管理3.1のフィルタがありません
- 15. なぜ私は、新しいプロジェクトの更新版であるプロジェクトに取り組んでいますか?
- 16. 更新されたサーバー、ListViewで最新の更新を表示する必要があります
- 17. Rのデータセットを更新する最も速い方法は何ですか?
- 18. gitのリモートタグを更新する(最新の安定版をマークする)
- 19. GitHubのskulpt.min.jsとskulpt-stdlib.jsの最新版はどこにありますか?
- 20. 編集/更新よりも速くクエリーを作成/破棄しますか?
- 21. 迅速に最新のalertviewのタイトルを更新するには?
- 22. ImageMagickより速いものはありますか?
- 23. pd.to_datetimeよりも速い日付変換がありますか?
- 24. 緩いぶら下がりワイヤー物理学を記述するアルゴリズムにはどのようなものがありますか?
- 25. リスト/ディクショナリの更新はありますが、理由はわかりません
- 26. 既存の通知を更新する方法はありますか?
- 27. blogdownでHugoの更新版が見つかりません
- 28. LocationListenerに速度の更新がありません
- 29. のみ行があり、更新されたものを表示するときにテーブルを更新する
- 30. コードを理解するソース管理用のマージツールはありますか?
私はマイクロプロセッサも変更されていることを追加する必要があります:あなたは私の記事を楽しんだ場合は、これらを好きになる - 私はバンスモリソンが、その後、このテーマに偉大な2つのパートMSDNシリーズを書いて参照してください。もちろん、それらは複数のスレッドやコアを提供します。また、CPU設計者は、OOPやJVM/CLRアプリケーションの実行トレースを微調整して、マイクロアーキテクチャを調整し調整することができました。例えば、仮想メソッド呼び出しと短いメソッドコール/リターンの文脈における分岐予測がはるかに優れているため、JITが最適化できないコードの一部が、危険性、ロールバック、またはストールの少ない順不同で実行できるようになります。一部のオーバーヘッドは完全に離れて最適化されます。これにより、マイクロベンチマーキングがはるかに問題となる危険性があります。 –
一部のマイクロプロセッサーは反対方向に動き始めましたが、より順番になるとリテラルレジスタ(PPC、Larabeeなど)に戻ることになりましたが、多くのパイプラインのペナルティが苦しくなりました。 – Crashworks
本当ですか! 「並列化された「スループットソフトウェア」がより経済的に面白くなると仮定すると、「計算のエネルギー効率が計算速度を上回る」傾向が勢いづいているので、これらのより単純なマイクロアーキテクチャ、異種のチップマルチプロセッサでは複雑でシンプルな組み合わせですらあります。興味深いことに、ハードウェアの振り子がスイングすると、VMコードジェンと組織の変更に時間内に反映される可能性があります。ソフトウェアはハードウェアを形作り、その逆も同様です。 –