アセンブラヽ(`Д´)ノモルァ
■ このスレッドは過去ログ倉庫に格納されています
0414408
NGNG(1) memcpy test : memcpy 関数を使用
(2) MMX test : movq を使用、ループアンロール 4 回
(3) SSE test : movaps を使用、ループアンロール 4 回
ソース、デスティネーションのアドレスは、128bytes でアラインメントしてある。
環境 : VC++ 6.0 SP5 + Processor Pack, 実行速度最適化
Athlon XP 1666MHz, AMD 761, 266MHz DDR-SDRAM 512MB, Windows XP
・src, dest それぞれ 8KB の領域、128K 回繰り返し
memcpy test : 260ms
MMX test : 180ms
SSE test : 170ms
・src, dest それぞれ 64KB の領域、16K 回繰り返し
memcpy test : 560ms
MMX test : 461ms
SSE test : 431ms
・src, dest それぞれ 512KB の領域、2048 回繰り返し
memcpy test : 3455ms
MMX test : 2764ms
SSE test : 2744ms
・src, dest それぞれ 4MB の領域、256 回繰り返し
memcpy test : 3435ms
MMX test : 2794ms
SSE test : 2754ms
少なくとも Athlon XP では、キャッシュ内においても
MMX から SSE にした場合メモリコピーは速くならないようだ。
ちなみに、GetTickCount で計ったからあまり精密な値ではない。
■ このスレッドは過去ログ倉庫に格納されています