関数呼び出しの進行状況を計算するために使用されるアルゴリズムにはどのようなものがありますか?非同期関数呼び出しの進行状況を報告するアルゴリズム
行うことが明らかにその簡単なあなたは、ループ、のようなものがある場合:あなただけのいくつかの一般的なデリゲートを持っていて、非同期的にそれを実行するだけでなく、別のスレッドに通知したいとき、およそ
Action<Double> notifier = d => Console.WriteLine("Completed: " + d.ToString());
Double _interval = 0.05;
for (int i = 0; i < 1000; i++)
{
int rem = default(int);
Math.DivRem(i, _interval, out rem);
if (rem == 0)
{
double progress = (double)i/1000;
notifier(progress);
}
}
しかし、何をその進歩、そしてあなたはfor-loopを簡単に使うことができないのですか?他のいくつかの簡単な方法があるかもしれない:
1)時間最初に(非常にパフォーマンスただしその場合は、実行時間の長いタスク)ログ内の関数のタイミング過去
2)ストアに悪いと機能(つまりを使用しますが、これは必ずしもタスクの特定の時間にCPU、メモリなどの余分な変数を考慮しない)
ただし、進捗状況を近似する場合でも、それ以上の高度なアルゴリズムは存在しますか?
過去のタイミングを保存することができれば、それを実行する最善の方法です。 CPUとメモリはおそらくあまりにも余裕があります。過去のタイミングは将来のパフォーマンスの最良の指標です –