Latency numbers every programmer should know — Gist
L1キャッシュ参照 0.5ナノ秒 分岐予測失敗 5ナノ秒 L2キャッシュ参照 7ナノ秒 Mutexのロックとアンロック 25ナノ秒 メインメモリー参照 100ナノ秒 Zippy[Snappy]による1KBの圧縮 3,000ナノ秒 1Gbpsネットワーク越しに2KBを送信 20,000ナノ秒 メモリーから連続した1MBの領域の読み出し 250,000ナノ秒 同一データセンター内におけるラウンドトリップ 500,000ナノ秒 ディスクシーク 10,000,000ナノ秒 ディスクから連続した1MBの領域の読み出し 20,000,000ナノ秒 パケットを、カリフォルニア→オランダ→カリフォルニアと送る 150,000,000ナノ秒 Jeff Dean著(http://research.google.com/people/jeff/)
元ネタはPeter Norvig (http://norvig.com/21-days.html#answers)
素晴らしく実感できる比較版: https://gist.github.com/2843375
いくつかのレイテンシーは、時間ではなくサイクル数で数えるべきなのだろうが、まあ、簡単な比較のためには、時間でもいいのだろう。
ディスクシークが今も昔も10ミリ秒かかるのは何ともならん。SSDなどのフラッシュメモリベースの記憶装置の大容量化が待たれる。
追記:すこし参考文献が追加されていたので追記。
だいぶ反響があるようだが、メインメモリーへの読み書きは今も昔も遅い。だからこそレジスターがあり、キャッシュがありと、メモリーの遅さを何とか隠そうとする方法が発達した。
「素晴らしく実感できる比較版」のリンクがおかしいです。
ReplyDeletehttp://cpplover.blogspot.jp/2012/05/:%22https://gist.github.com/2843375%22
に飛ばされます。
href=:"..."となっていました。
ReplyDelete興味深い挙動だ。