ソフトウェアで非現実的な見積もりを出すプログレスバーや時間の見積もりが好きではないのは私だけではないことを私は知っています。最良の例は、10秒で0%から90%にジャンプし、最後の10%を完了するのに1時間かかるインストーラーです。
ほとんどの場合、プログラマーはタスクを完了するためのステップを見積もり、現在のステップ/合計ステップをパーセンテージで表示します。各ステップの完了には異なる時間がかかる可能性があるという事実を無視します。たとえば、データベースに行を挿入する場合、挿入時間は挿入された行の数に応じて長くなる可能性があります(簡単な例)。または、ファイルをコピーする時間は、ファイルのサイズだけでなく、ディスクとそれがどれほど断片化されているか。
今日、私は誰かがすでにこれをモデル化しようとしていて、おそらく構成可能なロバスト推定器を備えたライブラリを作成したかどうかを自問しました。外部要因(ネットワーク接続、ユーザーが他のプログラムを実行するなど)がその役割を果たすため、確実な見積もりを出すことは難しいことを私は知っています。
プロファイリングを使用してより適切な推定量を設定するソリューションもあるかもしれません。あるいは、機械学習アプローチを使用することもできます。
この問題の高度な解決策を知っている人はいますか?
これに関連して、プログレスバーの再考という記事が非常に興味深いものであることがわかりました。プログレスバーが時間の認識をどのように変えることができるか、そしてそれらの洞察を使用してより速いように見えるプログレスバーを作成する方法を示しています。
編集:時間の見積もりを手動で調整する方法を考えることができます。「推定ライブラリ」を使用しても、アルゴリズムを微調整する必要があります。しかし、この問題は統計ツールで対処できると思います。もちろん、見積もり担当者はプロセス中にデータを収集して、次のステップのためのより適切な見積もりを作成します。
私が今していることは、前のステップ(タイプごとにグループ化され、ファイルサイズ、トランザクションのサイズなどで正規化されたステップ)でかかった平均時間を取り、この平均を次のステップの見積もりとして取ります(ここでも、さまざまなタイプでカウントし、サイズ)。
今、私は推定量を作成するためのより良い統計ツールがあることを知っています、そして誰かがそれらを問題に適用したかどうか疑問に思います。