CMapを高速に使うためには


[Class] CMapで軽く使い方に触れていますが
ほかにCMapを使う場合のヒントをいくつか。

初期サイズを定義する

事前に収納する数が分かっている場合は
InitHashTableにてサイズを指定しておくと高速に動いてくれます。

結果:
1:0.594 seconds
2:2.360 seconds

圧倒的ですね。
ちなみにサイズはデータより20%ほど大きい値がいいらしいです。
それと素数の場合にパフォーマンスが最大になるそうです。

SetAtではなく[]を使う

データ変更時には[]でデータにアクセスしたほうが高速なようです。

結果:
1:1.125 seconds
2:1.141 seconds

ほとんど誤差な気もしますが、何度計測しても2が1より速くなることはなかったので
たぶんSetAtより高速です。
ちなみに

のようにも書けますが、NULLが返って来る危険なコードとなるので
取得はLookupで行うのが無難だと思います。

不得意分野では使わない

場合によってはCMapより高速な選択肢があるかもしれません。
いままでの例のような使い方はCMapには向かないパターンです。

結果:
1:1.209 seconds
2:0.847 seconds

CArrayの方が高速ですね。
単純にすべてを羅列するような使い方の場合はCMapではなく、CArrayなどを検討したほうがいいです。

こんなとこでしょうか。
まあ、基本といえば基本なんですが、覚えたてはなんでもかんでもCMapにしてたなぁと思いまして。
何かの役に立てば幸いです。

Comments (0)

› No comments yet.

コメントを残す

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Pingbacks (0)

› No pingbacks yet.