私の会社では毒性レポートを使用して毒性レポートツールの入力としてリフレクタコードメトリックを使用して静的コードを測定していますが、明らかにコードの逆アセンブラが表示されます。私はオブジェクトとXMLにLINQを使ってコードをクリアにしていますが、スタックサイズの問題に直面します。私は逆アセンブルされたコードを見て、どこでlinq節を含んでどこにデリゲートを生成するのか見ていきます。また、メソッドを作成します。どのように私は代議員を取り除くことができるか誰も知っていますか?ここでは例です:LINQスタックサイズの問題
ソースコード:
List<XElement> toolPnP =
(from c in xPnpInfo.Descendants("assignedSupport")
where c != null
select c).ToList();
を逆アセンブルしたコード:
List<XElement> toolPnP = xPnpInfo.Descendants((XName) ("assignedSupport")).Where<XElement>(delegate (XElement c) {
return (c != null);
}).ToList<XElement>();
これらのデリゲートはを指している:
私はそれを取り除くことができる方法[CompilerGenerated]
private static bool <.ctor>b__2(XElement c)
{
return (c != null);
}
、いかなる勧告も本当に歓迎されます。
どの "スタックサイズ" の問題をあなたが持っている、これは本物か想像しているのですか? – BrokenGlass
これは時期尚早の最適化のようです。 Linqはデリゲートを使用することに完全に基づいているため、通常のforループを使用すること以外ではそれをやり遂げることはできません。 – rossisdead
これは本当のことであり、スタックサイズの問題は、メソッドの作成(コンパイラ生成)のためにスタックのサイズが増えていることです。 Linqはデリゲートに基づいており、デリゲートはメソッドを使用するので、私はそれらを作成することができます。あるいは、メソッドを生成するためにコンパイラにメソッドを生成させることもできます。 –