タグ

2010年5月17日のブックマーク (3件)

  • 関数へのポインタによるコールバックをインライン化する - Cry's Blog

    関数ポインタとコールバックとインライン化と C++,特にSTLではコールバックにファンクタを使用することが推奨されています.コールバックにファンクタを用いることの利点は大きく次の2つだと思われます. コールバックがインライン化される(ただしあくまで「かも知れない」) 各種のアダプタを適用できる 以下では主に前者について,関数ポインタを用いたコールバックをインライン化できないかを考えます. そもそも,インライン化したい関数というのは短い簡潔な関数のはずで,そういった関数のインライン化のためだけにstructごにょごにょ,operator()うにゃうにゃとやるというのは面倒だなぁ,関数ぺぺっと書きたいな,というモチベーションは十分にありえるかと思われます. さて,関数ポインタ経由での関数呼び出しは通常インライン化されないと考えられます.これは関数ポインタ経由の場合,実行時まで呼び出す関数のアド

    関数へのポインタによるコールバックをインライン化する - Cry's Blog
    aont
    aont 2010/05/17
  • 関数へのポインタによるコールバックをインライン化する - Cry's Blog

    関数ポインタとコールバックとインライン化と C++,特にSTLではコールバックにファンクタを使用することが推奨されています.コールバックにファンクタを用いることの利点は大きく次の2つだと思われます. コールバックがインライン化される(ただしあくまで「かも知れない」) 各種のアダプタを適用できる 以下では主に前者について,関数ポインタを用いたコールバックをインライン化できないかを考えます. そもそも,インライン化したい関数というのは短い簡潔な関数のはずで,そういった関数のインライン化のためだけにstructごにょごにょ,operator()うにゃうにゃとやるというのは面倒だなぁ,関数ぺぺっと書きたいな,というモチベーションは十分にありえるかと思われます. さて,関数ポインタ経由での関数呼び出しは通常インライン化されないと考えられます.これは関数ポインタ経由の場合,実行時まで呼び出す関数のアド

    関数へのポインタによるコールバックをインライン化する - Cry's Blog
  • C の qsort と STL の sort の速度比較 - bkブログ

    STL は知れば知るほどよくできていると感心します。Effective STL の46項には今回と同様の実験が取り上げられています。 Effective STL には他にも、イテレータの無効化やコンテナ操作の性能など、 STL を使う上で注意すべき点が詳しく解説されています。 実験に使ったプログラムは以下の通りです。 $((2**24)) はコマンドラインで 2の24乗を計算する表記です。bash や zsh で使えます。 実行結果 % g++ -O2 -o sort sort.cpp % ./sort $((2**24)) qsort: 9.22 stl-sort-func: 5.62 stl-sort-functor: 2.56 % icc -O2 -o icc-sort sort.cpp % ./icc-sort $((2**24)) qsort: 8.82 stl-sort-fun