いくつかのメモリおよびCPU集約タスクを検討してください。
例:タスクブロック:メモリから16バイトを読み取り、CPUジョブを実行します。次に、メモリに書き戻します。
このタスクブロックは、各コアが1つのタスクブロックを実行できるという意味で並列化できます。
例:8CPUには8×16バイトのキャッシュが必要ですが、同時に実行する必要があります。GolangでCPUキャッシュを使用することはできますか?
答えて
はい、マシン上で実行されている他のコードと同様、すべてCPUキャッシュを使用します。
キャッシュを最も効率的に使用するようにアプリケーションをコーディングする方法を説明するのは、あまりにも広い質問です。 Go Benchmarksを設定し、コードをリファクタリングして時間を比較することを強くお勧めします。 (VM内のベンチマークは行わないでください - どのプラットフォームでも種類は異なりますが、Goのベンチマークには十分な時計がありません。
アプリケーションをコード化する能力がすべてになり、そのCPUキャッシュのを効率的に使用します。これは、変数の使い方、更新頻度、スタック上のGC、スタック上のGC数、頻度などの幅広い話題です。
正しい方向に向ける1つの小さな例効率的なL1およびL2キャッシュ開発についてもっと読む...
L1キャッシュは64ビットの行を使用します。通常、4x16bit Int16を格納する場合、スタックに割り当てられ、ほとんどすべてが同じ行のキャッシュに格納されます。
Int16のいずれかを更新したいとしますか? CPUキャッシュは行の一部を更新できません。行全体を無効にし、以前の3つのInt16と新しい更新値で新しいキャッシュ行を割り当てる必要があります。
非常に非効率です。
この問題の解決策の1つは、Int64sを使用することです。この場合、CPUキャッシュは1行を無効にしますが、他の3つはキャッシュに保存して、高速読み込みを行います。もっとプッシュやポップをやっていますか?
また、あなたのユースケースに大きく依存します。これらの4つのint(例えば、ミューテックスロック)の多くのコンテキスト切り替えを使用していると、処理が遅くなることさえあります。その場合、それは最適化するための全く別の問題です。
スタックとヒープの高周波スケーリングとメモット割り当てを読み出すことをお勧めします。
- 1. /dev/shmのメモリをCPUキャッシュにキャッシュできますか?
- 2. Webサービスでキャッシュを使用することはできますか?
- 3. サービスワーカーを使用してmp3ファイルをキャッシュすることはできますか?
- 4. スプリングブートコントローラでキャッシュ制御を使用して応答をキャッシュすることはできますか?
- 5. 私はPHPでキャッシュすることはできますか?
- 6. golangでhttp.Responseをキャッシュする方法は?
- 7. nodejsまたはgolangでVisual C++ MFC関数アドオンを使用することはできますか?
- 8. PicoContainerキャッシュをスレッドセーフにすることはできますか?
- 9. 親をレールにキャッシュすることはできますか?
- 10. 動画をキャッシュすることはできますか? IOS - Swift
- 11. あるアプリケーションでキャッシュを設定し、別のアプリケーションで使用することはできますか?
- 12. Javascriptでキャッシュを扱うことはできますか?
- 13. Golang型アサーションで反射型アレイを使用することはできますか?
- 14. GolangでSQLite ATTACHとDETACHを使用できます
- 15. 80コアのシングルLinuxボックスでアプリケーション(CPUとキャッシュの使用量)を監視する
- 16. Flatbuffers GoLang-データを取得することはできません
- 17. Golang:ポインタを使用するとき
- 18. golangで時間計算に変数を使用することはできませんか?
- 19. FUSEファイルシステムでLinux VFSキャッシュを使用することは可能ですか?
- 20. Nexus/ArtifactoryのキャッシュRPMとNPMを使用できますか?
- 21. C#では、HandleUnknownAction()オーバーライドの出力をキャッシュすることはできますか?
- 22. GolangモバイルをReact-Nativeで使用できますか?
- 23. Solaris 5.10でgolangを使用できますか?
- 24. 複数のCPUコアをGoogle Datalabで使用できますか?
- 25. cudaEvent_tを使用してCPU時間を測定することは信頼できますか?
- 26. oProfileを使用中にCPUコアを1つ指定することはできますか?
- 27. リストを使用することはできますがIListを使用することはできません。
- 28. モデルでcancanを使用することはできますか?
- 29. jQueryをjavaScriptで使用することはできますか?
- 30. キャッスルウィンザーでスコープライフスタイルを使用することはできますか?