05/06/02 14:36:27
>>166
しかも、プロファイル情報に基づいてinline展開するか決めてるようなんで、
OBJファイルごとにinlineするかしないかが変わるってことだから
これからのソースは、ちょっと大きめの関数はinlineしないほうがいいのかも。
あと、なんか勘違いしている人がいそうなんで説明
普通にプロファイラというと
実行時にある関数がどれだけ呼び出されて、CPUをどれくらい使っているかを調べるソフト。
これでネックになっている関数を調べ、その呼び出す回数を減らしたり、アルゴリズムを決めるのに使う。
実行はプロファイル用にコンパイルした実行ファイルを使う。
もちろん、計測する処理が入るので実行時間は長くなり、
これを実行したからといってプログラムが速くなるわけではない。
ちなみに、VC++6.0のプロファイラは実行時間は一瞬だが全く役に立たなかったと思う。
最適化コンパイラのPGOは
簡単に言うと、ある関数をインライン展開するかどうかを決めるため方法で、
たくさん呼ばれている関数はインライン展開し、
ほとんど呼ばれない関数はインライン展開しないというものだと思う。
ただ、実行時のパラメータによって呼び出し回数は変化すると思うので
すべての条件で高速化につながるとは限らない気がする。
あと、最適化には速度とファイルサイズサイズの最適化があり、
両者はトレードオフの関係にあると言われている。
PGOは両者のバランスを考えて最適化を行っている。
間違っていたら訂正よろしく。