Rust part31 (631レス)
Rust part31 http://mevius.5ch.net/test/read.cgi/tech/1751545806/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
591: デフォルトの名無しさん [sage] 2025/07/30(水) 19:41:04.04 ID:ZSzdQGzh DDRn-SDRAMからキャッシュへのfetch時間は、12(ns)位だから、メモリコントローラが賢ければ、 3GHzのCPUの場合、36クロック位で済むので、めちゃくちゃ遅いわけではない。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/591
593: デフォルトの名無しさん [sage] 2025/07/30(水) 20:03:01.97 ID:ZSzdQGzh Grokによれば、以下のように、DDR5 SDRAMからキャッシュに乗せるまでの時間は、8〜20(ns)程度らしい。 これは、3GHz の CPU だと 24〜60 (クロック) 程度に相当する時間。ものすごく遅いわけではない。 「 実測値として、Intelのx86 CPU(例:12th/13th/14th Gen Core)+DDR5構成でのプリフェッチ完了時間は、以下のように報告されています():標準的なDDR5-4800構成:約15〜25 ns(L1/L2へのプリフェッチ)。 高性能DDR5-7200構成:約10〜20 ns。 最適化された環境(低CL、オーバークロック):8〜15 ns。 」 http://mevius.5ch.net/test/read.cgi/tech/1751545806/593
594: デフォルトの名無しさん [sage] 2025/07/30(水) 20:11:57.87 ID:ZSzdQGzh 大体で言えば、32バイト位の領域がキャッシュに乗っていない場合に、24〜75 (クロック) 程度の追加時間が必要になる。 しかし、そこから連続するメモリーにアクセスしている場合には、追加時間は 0 クロック。 通常、1つの構造体やクラスに対してまとまって処理するが、処理に本質的に必要な時間が 100 クロックだとすると、 そこに、24〜70 クロック程度が上乗せされることになる。だから、トータルだと、24%〜75% 程度、処理時間が 長くかかる、ということになる。 もしも、本質的な処理に必要な時間が 10 クロックのように非常に粒度が小さい処理の場合だと、 キャッシュに乗っていれば、10 クロックだけで済むところが、34〜85 クロックかかることになる。 その場合は、3.4倍から8.5倍の時間がかかる、ということになる。 だから、リンクリストの場合、1つのノードのバイト数が少なかったり、ループの中で1ノードあたりに処理 する内容が少ないならば、キャッシュに乗っている事が重要になる事が有る。 しかし、1つのノードのバイト数が大きかったり、ループの中で処理する1ノードあたりの処理が 大きい場合は、キャッシュミスの影響をあまり気にしなくてよい。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/594
595: デフォルトの名無しさん [sage] 2025/07/30(水) 20:19:57.86 ID:ZSzdQGzh 具体例で言うと、大量の3Dの座標データなどに対して、CPUで単純に平行移動を書けるような場合は、SIMD命令を使わない場合、 1点当たりの処理は、ループ自体に必要な時間が5クロック、足し算に必要な時間が3次元の場合、3クロックで、 全体で、1点当たり8クロック、と見積もれる。ループを展開して、例えば、8点ずつ処理したりすれば、一点当たりに 必要なクロック数はもっと下げられる。SIMD命令を使えば、もっと下げられる。 このような場合は、LinkedList(list) よりも、ArrayList(vector)の方が適す。 しかし、1行に80文字くらい入っているようなテキストの1行を処理する場合、1行を処理するには数百クロックが必要になり、 行全体を収める構造としては、LinkedListでも、キャッシュミスによる速度低下の影響は軽微。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/595
597: デフォルトの名無しさん [sage] 2025/07/30(水) 20:46:03.62 ID:ZSzdQGzh 高速なプログラムを作った人が「キャッシュの事も考慮することで高速化しています」と言っていたとしても、 それは、キャッシュ以外の部分が既に早く作りこまれた後だからの話。大部分の遅さの原因はキャッシュの事を気にする 以前の問題で、大半はLinkedListを使うべき場所でArrayListを使っている事だったりする。 なぜなら、キャッシュミスは、24〜75クロック程度の時間増加にしかならないからだ。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/597
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.025s