相互に再帰的な関数のグループをプロファイルしようとしています。私は、各機能について、他の機能に比べてどのくらいの時間がかかるかを知りたいのが望ましいです。しかし、これらの関数が相互に再帰的であるため、通常のプロファイリングではすべての関数が100%時間を費やしています。相互に再帰的な関数を効果的にプロファイルする方法
プロファイリングを行うには、再帰呼び出しに費やす時間を含めずに、各関数の包括時間を表示します。例えば、AはBとCの両方を呼び出します。 BはAを再び呼び出す。 Cは何も呼び出さない。 Aの場合、Aがコールスタックの上にあるか、A; C(上がCで、AはBではない)の割合を表示したい。私はプロファイリングがコールスタックを見るときに相互に再帰的な関数を超えて見てはいけないと思うので、スタックXAZ(最下行)はAZになり、XAZBはBになります。
私は、それぞれの関数は末尾の再帰的な形式になり、その後、末尾の呼び出しを除くすべてを別の非再帰的な関数に入れます。しかし、これは大きな書き換えであり、プログラムのパフォーマンス特性にも影響するため、理想とはほど遠いものです。
理想的には、私を助ける設定オプションを備えたプロファイラがあります。私はC#で働いています。 1つはありますか?それ以外の場合は、プロファイルセッションファイルをハックして私が望むものを得ることができると思いますか?
ありがとうございます!