[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