この問題はほとんど解決できないと思いますが、実行中のプロセスについてもう少し知識があれば、正確な見積もりを作成することは可能です。また、未知数が多い場合は、それらの未知数をユーザーに知らせて、ユーザーがそれらを考慮できるようにすることをお勧めします。
ファイルのバッチをダウンロードする簡単な例を挙げると、2 つの既知の変数があります。
ファイルごとに一定のオーバーヘッドがあります (接続を確立するのにかかる時間と、ファイル システム上のファイルを開くのにかかる時間)。ファイルのサイズに関連する明らかなダウンロード時間もあります。これを現在のダウンロード速度の残り時間として表現できる関数を作成するのは簡単で、ダウンロード速度があまり変動しない限り正確です。しかし、そこに問題があります。
実行中の操作の正確なモデルがあれば、外部からの影響がなければ、操作にかかる時間を簡単に予測できます。そして、それが可能なことはめったにありません。
ただし、これらの外部の影響を理解し、説明しようとするソリューションを求めることはできます。ユーザーは、新しい ETA に合わせて計画を調整できるため、速度が劇的に変化したときにアラートを受け取ると役立つ場合があります。現在の操作に影響を与えている要因を説明することも役立つ場合があります。例えば
Your download will complete in 6 minutes, if the download speed stays at 50k/s
これにより、速度が変化する可能性が高いことがわかっている場合、ユーザーは知識に基づいた推測を行うことができます。そして最終的にはフラストレーションの減少につながります。