確保した際、ゼロクリアが必要になる時、今まではforループを回すなりしてゼロクリアしていたのだが、簡単な方法が有ったようなので覚えておこうと思う。
int *array;としていた所の2行目を、
array = new int[N];
array = new int[N]();とすれば良い。
ちなみに自分の環境で時間計測をすると、普通にforループでゼロクリアした時よりも、2倍くらい速いようだ。ちなみにmemsetとも比較してみたが、memsetの方が1.5倍くらい速かった。
その確認過程で、配列サイズを大きくすると、ゼロクリア手法をとらなくてもゼロクリアされている?疑惑が出てきたのだが、これは自分の環境の問題なのだろうか…
参考
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200804/08040022.txt
http://d.hatena.ne.jp/uskz/20080421/p1
http://d.hatena.ne.jp/DOSEI/20111013/p1
0 件のコメント:
コメントを投稿