どうすれば改善できますか?ドットトレースプロファイル、なぜメモリフェッチが遅いとフラグされている
プロファイルがリストからデータをフェッチする
public List<RowDataDto> Rows { get; set; }
public RowDataDto GetRow(int rowNdx)
{
var row = Rows.SingleOrDefault(x => x.LineNumber == rowNdx);
return row;
}
リストは平均で1000件の周りに含まれています遅いことを示唆しているイムだけでどのようにそれをパフォーマンスを見ることがbenchmaching。
その最も遅い部分はメモリリストからの取り出しです。
GetRowが呼び出される前に、十分に行が設定されます。
LINENUMBERはINT32
PSである - 私はちょうどので、私は適切なツールを使用する方法を理解できない場合があり、それに非常に新しいドットトレースとIMをインストールしました。私は簡単なテストをしています。私は "Net Process"を起動してテストを実行し、ある時点でスナップショットを取得します。
このツールを使用したことがある場合は、事前に教えてください。
リスト内の1000個のアイテムを検索するのは大したことではありませんが、パフォーマンスが重要な要素であれば、私はいくつかの変更を行います。まず、ラムダ式の使用頻度を、メソッド。第二に、Linqを使用する代わりに、または少なくともforeachを使用してください –
ヒープクロージャを持つラムダ式は、GCの点で悪です。私は過去にパフォーマンスの最適化のために多くの問題を抱えていた –
@VahidKあなたが意味するものの例を私に見せてくれますか? – Seabizkit