ETA 計算機

処理速度から長時間タスクの残り時間と完了時刻を算出します。総量・完了済み・処理速度を入力するだけで、残り時間と完了予定時刻がわかります。

この処理はあとどれくらいで終わる? 総量・完了済みの量・現在の処理速度を入力すると、残り時間と全体の所要時間、そして完了予定の時刻を計算します。

進捗 0%
残り時間
全体の所要時間
完了予定

自分をだまさない完了時刻の見積もり方

計算は単純、前提こそが難しい

ETA は単なる割り算です。残作業を処理速度で割る。残り 40,000 行で 1 分あたり 500 行なら 80 分。このツールはその割り算を行い、結果を読みやすい単位に変換し、開始時刻に足して実際の時計の時刻として返します。頭の中で足し算をする手間が要りません。

難しいのは割り算ではありません。この割り算は「測定した速度が最後まで維持される」と仮定していますが、その仮定は当たるより外れることのほうが多いのです。一括インポートはインデックスが育つにつれて遅くなります。ダウンロードは TCP のスロースタートが終われば速くなります。バッチ処理は異常に大きなレコードの塊に当たることがあります。ETA は現在の投影であって未来の予言ではない。誰かがこの数字を進捗報告に書き込む前に、そのことをはっきり言っておく価値があります。

速度の測定ウィンドウは意識して選ぶ

見積もりは与えられた速度をそのまま引き継ぐため、どの区間で測るかがこのページで最も影響の大きい入力になります。直近 10 秒の速度は反応が良い代わりに暴れます。見るたびに違う ETA が出ます。実行開始からの平均速度は安定していますが鈍く、処理がとっくに詰まっていても楽観的な数字を出し続けます。

短い処理なら全期間の平均で十分です。時間単位の処理なら、数分の移動ウィンドウがちょうど良いバランスになります。減速に気づける程度に新しく、細かい揺らぎに反応しない程度に長い。両者の値が大きく食い違うなら、その食い違い自体が有用な信号です。速度が変化しているということなので、正直な答えは一点の時刻ではなく幅を持った範囲になります。

残り時間は全体の所要時間と並べて読む

このツールは残り時間だけでなく全体の所要時間も表示します。二つを並べると、どちらか一方だけよりずっと多くのことがわかります。進捗 5% で全体の所要時間が 11 時間と出ていれば、残り時間の数字が何であれ「これは張り付いて見るような処理ではない」と即座に判断できます。妥当性チェックにもなります。推定された全体時間が先週の同じ処理と大きく違うなら、速度の測定が誤っているか、本当に何かが変わったかのどちらかで、いずれも実行が終わる前に調べる価値があります。

進捗率を表示しているのも同じ理由です。開始直後で完了量が小さいうちは、速度の推定がごくわずかなサンプルに依存しており、ETA はほとんど意味を持ちません。パーセンテージが上がっていくのを見て初めて、その見積もりが引用に足るだけのデータを持ったかどうかがわかります。

すべてブラウザ内のネイティブ JavaScript で計算します。外部ライブラリなし、アップロードなし、追跡なし。

よくある質問

残り時間はどう計算していますか。
入力された速度を「毎秒あたりの単位数」に正規化し、残量をそれで割っています。読みやすい所要時間、完了時刻、進捗率など他のすべてはこの一つの数値から導出されます。
なぜ単位を 2 つしか表示しないのですか。
「3 日 4 時間」のほうが「3 日 4 時間 12 分 7 秒」より扱いやすいからです。その規模では分や秒はノイズであり、四捨五入ではなく単に省略しているので情報を隠してはいません。
データ処理以外にも使えますか。
使えます。単位はあなたが決めるものです。行数、ファイル数、キロメートル、ページ、チケットなど何でも構いません。単位の意味を仮定しないので、数えられる総量と測れる速度さえあれば使えます。
途中で速度が変わったらどうしますか。
現在の数値を入力し直してください。過去の入力を記憶しないので、完了量と実測速度を更新すれば、いまの実際の状態に基づいた新しい推定が得られます。
完了時刻はタイムゾーンを考慮しますか。
完了時刻はブラウザのローカルタイムゾーンで、お使いのロケールの書式で表示されます。開始時刻の入力欄もローカルの時計時刻なので、両者は整合しています。
サーバーに送信されますか。
いいえ。すべての値はページ内に留まります。計算全体がブラウザ内の数回の算術演算にすぎず、アップロードするものがありません。