forループが長すぎます。理由はわかりません。forループで費やされた時間の診断で問題が発生しました。C#
Stopwatch proctime = new Stopwatch();
Stopwatch innerlooptime = new Stopwatch();
Stopwatch outerlooptime = new Stopwatch();
proctime.Start();
int length = inbtable.Rows.Count;
outerlooptime.Start();
for (int i = 0; i < length; i++)
{
outerlooptime.Stop();
DataRow newrow = graphdata.NewRow();
innerlooptime.Start();
for (int j = 0; j < graphdata.Columns.Count; j++)
{
colname = graphdata.Columns[j].ColumnName;
newrow[j] = inbtable.Rows[i][colname];
}
innerlooptime.Stop();
outerlooptime.Start();
graphdata.Rows.Add(newrow);
}
proctime.Stop();
あなたの時間それをすべて行う場合は、単に「内部ループ」やJ-ループに費やす時間は、第二の1/10のようなものです。
iループ内で費やされた時間は、jループではなく、1/10秒です。
合計ループに費やされる時間は約1秒です。 Time-iloop + Time-jloopは合計時間の1/5と同じです。残りの時間はどこに費やされていますか?処理時間(コード内でプロクティム)、アウターループ時間および内部ループ時間を比較しながら、画像を見てください。なぜそれらは、互いにもっと近いものに加わらないのですか?
最初のループの外側でouterlooptimeを開始しますが、ループが開始するとすぐに停止しますか? –
Visual Studioを使用している場合は、Microsoftのシンボルを有効にしてパフォーマンスプロファイラを実行してみてください(options-> debugging-> symbols)。 cpuプロファイルによって生成される「ホットパス」は、どのコールが最も時間を費やしているかを示す必要があります。 –
James、まさに私が必要とするように聞こえる。ありがとう!今すぐ試すつもりです – metinoheat