Help us understand the problem. What is going on with this article?

mapの検索はfindとcountとどっちが早いんだろう

More than 5 years have passed since last update.

stlのmapの検索でcountの方が視覚的にわかりやすいソースになっていいよ!という記事を見かけた。
でも、findの方が見つけたら終了しそうだから、早くて、推奨されるはずでは…、と思い、試した。
※stlのソースとかは見てないです。すみません。

test.cpp
    // 速度を判定する
    // map_testには100程度の要素が格納されていますよ。pairがkeyという変わったmapですみません。
    std::pair<wstring,wstring> a = make_pair(L"mememe",L"aaa");

    // 各測定で、時刻をログで出力しました。そこらへんは割愛したソースですが。
    // 測定開始
    for(int i = 0;i< 1000;i++)
    {
         if (map_test.find(a) == map_test.end())
         {
             // 探すだけで処理はしないよ
         }
    }
    // 測定終了

    // 測定開始
    for(int i = 0;i< 1000;i++)
    {
         if (map_test.count(a) == 0)
         {
             // 探すだけで処理はしないよ
         }
    }
    // 測定終了

    a = make_pair(L"mememe",L"sss");    //見つからないパターン

    // 測定開始
    for(int i = 0;i< 1000;i++)
    {
         if (map_test.find(a) == map_test.end())
         {
             // 探すだけで処理はしないよ
         }
    }
    // 測定終了

    // 測定開始
    for(int i = 0;i< 1000;i++)
    {
         if (map_test.count(a) == 0)
         {
             // 探すだけで処理はしないよ
         }
    }
    // 測定終了

測定結果としては、要素数の関係か大差はなかったです。
気持ち、findの方が早いくらいで…。
key=文字、value=数値のマップだったらまた変わったかもしれませんね。

alleum
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away