一般的なwidsomは、同じ操作を実行する場合、rep movsb
がrep movsd
(または64ビットの場合、rep movsq
)よりもはるかに遅いということです。しかし、私はいくつかの最新のマシンでテストを行ってきましたが、実行時間は膨大な範囲のバッファサイズ(10バイトから2メガ)にわたって同一(測定ノイズまで)になっています。これまでは、2つのマシン(32ビットIntel Atom D510と64ビットAMD FX 8120)でテストしました。x86文字列命令のパフォーマンスについての信頼できる情報?
rep movsb
がrep movsd
(またはrep movsq
)よりも遅い現代の任意のx86(32ビットまたは64ビット)のマシンはありますか?もしそうでなければ、その差が重要だった最後のマシンは何でしたか、それはどれぐらい重要でしたか?
私は何があるかどうrep movsd
やrep movsq
を使用してのために整列していないヘッド/テールと並ぶ中央にメモリを分割しないためにテストの貨物culting束を回避したいというの観点から、この質問を聞いていますのよこれを行うに実際の利益...ここベンチマークの
最新の機械のパフォーマンス結果は正しいです。 –
これは、CPUではなくメモリバスの帯域幅によって抑制されます。 –
理論的にはそうかもしれませんが、他のコピー方法(例:Cループ)は2〜8倍遅くなります。したがって、消費されたCPU時間が差をつけています。 –