タグ

ブックマーク / natsugiri.hatenablog.com (1)

  • C++の関数オブジェクトが関数よりどれだけ速いか - でも今日はSRMあるから

    C++では関数オブジェクトのほうが関数より速い。呼び出しの時間に差がある様子。 数回呼ぶだけなら誤差だが呼ぶ回数が増えるとその速度は有利。 ソート std::sortの比較関数に関数や関数オブジェクトを与える。 関数 bool cmp(int x, int y) { return x < y; } 関数オブジェクト struct cmp_c { bool operator()(int x, int y) { return x < y; } } cmp; ファンクタとかファンクショノイドとか呼ばれる。cmpは上の関数のcmpと同じように呼ぶことができる。 ラムダ式 auto cmp = [](int x, int y) -> bool { return x < y; }; C++11の記法。関数オブジェクトが作られる。 cmpの型はfunction< bool(int,int) >かと思われ

    C++の関数オブジェクトが関数よりどれだけ速いか - でも今日はSRMあるから
    izariuo440
    izariuo440 2015/08/08
    std:sort はテンプレートなので最適化で比較関数がインライン展開されたりして関数呼び出しのオーバーヘッドが無くなる分速くなるはず。
  • 1