[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: memmove,memset
鈴木(康)です。
<200003220957.SAA07551@mail.ba2.so-net.ne.jp>の記事において
sato@ba2.so-net.ne.jpさんは書きました。
| 佐藤です。
|
| > mgl2 のチューニングの過程で、memmove と memset がとても遅いという
| > ことに気が付きました。( ちなみに memcpy は builtin 版)
| >
|
| 確かに遅い
| MC-R 530で -O3だと
| memcpy : 19102 k byte/sec
| memmove_fwd : 2621 k byte/sec
| memmove_back : 2575 k byte/sec
| memset : 3931 k byte/sec
| xmemset : 31605 k byte/sec
| xmemmove_fwd : 18181 k byte/sec
| xmemmove_back: 18181 k byte/sec
数字的には、
だいたい メモリバンド幅+ α キャッシュ残留分ぐらいで止まるみたいで。
# あ、in と out で x2 しなきゃいけません。
だから PenII は、520MB/sec ぐらいなんでしょう。
R530 は、... 36MB/sec
それでも R500 よりずっといいです。
いまの memset とか memmove はどうも遅そうなんで、
直すべきだと思います。
たぶん、C 版で十分です。
カーネルが使っているライブラリはどんなものか興味あります。
memset が早ければ OK ですが、万が一遅ければ、チューニングすべき。
0 クリアの性能が最重要だと思います。
| Pentium II 450(?) -O3だと
| memcpy : 268817 k byte/sec
| memmove_fwd : 265251 k byte/sec
| memmove_back : 264550 k byte/sec
| memset : 341296 k byte/sec
| xmemset : 338983 k byte/sec
| xmemmove_fwd : 221238 k byte/sec
| xmemmove_back: 235294 k byte/sec
|
--
鈴木 康司 @NEC
suz@hpc.bs1.fc.nec.co.jp
TEL 0423-33-5381