私はPythonのメトリックライブラリをC++に移植しています。 Pythonライブラリが提供する1つのAPIは、関数に関するタイミングデータを簡単に記録する関数デコレータです。 C++のPython関数デコレータに相当するものは何ですか?
@timed('timing.foo')
def foo():
...
foo_result = foo()
start = time.time()
foo_result = foo()
post_metric_to_endpoint('timing.foo', time.time() - start)
になっている関数定義を変更することによりすることが、私たちは、インスタンスをラップして、発信者にタイミング関数を呼び出すの負担を課すthis answerを見つけますこれは、コードベース全体でパフォーマンスデータを取得しないことを意味します(最初は更新するのが煩わしく、後で簡単に忘れてしまいます)。同様に、this answer〜Timing in an elegant way in c++は、コールサイトを変更する必要があります。 This other answerは、任意のコードブロックをラップする方法を提供します。これは、理論的には、時間の対象となる関数の本体全体をインデントしてスコープ内にネストできることを意味します。これは私が欲しいと思っているものの中で最も近いものですが、かなり醜い、かなり侵入的なものです。パフォーマンスの影響についてはわかりません。
これはライブラリとして使用することを目的としているため、時間を計算する関数のソースを変更できます。実際には、私はすべての呼び出しが時間切れになるように、これが望ましいです。ほとんどの議論は開発のアドホック・プロファイリングに焦点を当てているのに対し、私は生産環境で常にアクティブなシステムを構築しようとしています。
C++は、このPythonの機能に相当するものを持っていないことができ気力をくじく見える場合。 –