2017-05-23 4 views
-4

特定のクラスの既定のコピーコンストラクタでプログラムが費やしている時間を知りたいと思います。コンパイラーによってデフォルトのコピーコンストラクターが実装される方法と同じ方法でコピーコンストラクターを実装する方法はありますか?本体の実行前と実行後の現在の時刻をチェックするインストルメンテーションコードが追加されていますコンストラクタ?C++の既定のコピーコンストラクタのパフォーマンスを測定する方法

+0

独自のコピーコンストラクタを作成し、デフォルトとの時間を比較します。しかし、デフォルトで正しいコピーが作成されていれば、自分の実装がより速くなる方法はわかりません。 –

+2

C++ 11では、委譲ロジックを持ち、通常のコピーコンストラクタに委譲するカスタムコンストラクタを追加する委任コンストラクタを使用します。それ以外の場合は、通常はコンパイラにデフォルトのコピーコンストラクタを生成させてから、コードを記述するのではなく、実行時にコードを動的に調整する外部プロファイラを使用します。 –

+0

通常は、コピーコンストラクタがインライン化されていない限り、プロファイラが生成されたコピーコンストラクタについての情報を提供できると期待します。あなたは従来のプロファイラが来にくいプラットフォームで作業していますか? –

答えて

0

gprofまたは別のプロファイラを使用してください。 もちろん独自のタイミングループを書くこともできますが、C++コンパイラは非常に積極的に最適化することができます。適切なプロファイラは、プログラムがどこに費やしているかを正確に伝えます。

関連する問題