プログラマーが知っておくべきレイテンシの数値を視覚的に表現
- L1キャッシュ参照: 1ナノ秒
- 分岐予測ミス: 3ナノ秒
- L2キャッシュ参照: 4ナノ秒
- ミューテックスのロック/アンロック: 17ナノ秒
- 1 Gbpsネットワーク経由での1KBデータ送信: 44ナノ秒
- メインメモリ参照: 100ナノ秒
- Zippyを使った1KBデータ圧縮: 2マイクロ秒
- メモリから1MBをシーケンシャル読み取り: 3マイクロ秒
- SSDから4Kランダム読み取り: 16マイクロ秒
- SSDから1MBをシーケンシャル読み取り: 49マイクロ秒
- 同一データセンター内の往復時間: 500マイクロ秒
- ディスクから1MBをシーケンシャル読み取り: 825マイクロ秒
- ディスクシーク: 2ミリ秒
- カリフォルニアからオランダまでパケットを送って戻る: 150ミリ秒
GN⁺の見解
- このデータは、プログラマーがシステム設計や性能最適化を行う際の重要な参考資料になり得る。各演算や処理にどれほど時間がかかるかを知れば、どこがボトルネックになっているのかを把握し、改善できる。
- たとえば、メモリアクセス時間とネットワーク遅延を比較すると、ネットワーク呼び出しを最小化し、メモリ内でデータを処理するほうがはるかに高速だと分かる。これは分散システム設計における重要な考慮事項になり得る。
- こうしたレイテンシはハードウェアや技術の進歩に応じて変化し得るため、最新情報を維持することが重要である。たとえば、SSDの進化によってディスク読み取り時間は大幅に短縮された。
- 新しい技術やオープンソースを導入する際には、こうしたレイテンシを考慮してシステム性能を予測し、どの技術が実環境で最も効果的かを判断する必要がある。たとえば、インメモリキャッシュソリューションを使えばネットワーク遅延を減らせるが、キャッシュ一貫性やデータ同期について追加の考慮が必要になる。
4件のコメント
https://colin-scott.github.io/personal_website/research/…
こちらのほうが見やすいですね。
うわ、UI/UX が本当に気に入りませんね……
本当ですね、すごいですね、、
Hacker Newsのコメント
1つ目のコメント要約:
latency-containerクラスを持つHTML要素の子要素を巡回し、それぞれのレイテンシを出力する。2つ目のコメント要約:
3つ目のコメント要約:
Latencyが入っておらず、検索時に他の結果を見つけにくいと指摘している。4つ目のコメント要約:
5つ目のコメント要約:
6つ目のコメント要約:
7つ目のコメント要約:
8つ目のコメント要約:
9つ目のコメント要約: