私はブロッキング アルゴリズムを作成していますが、そのようなアルゴリズムにタイムアウトを追加することは、精度を維持する必要がある場合、それほど簡単ではないことに気付きました。
タイムアウトを追加するということは、ブロッキング アルゴリズムが X ミリ秒後に中止されなければならないことを意味します。今、私には2つのオプションがあるようです:
- 反復時間 (エラーはあるが速い)
- ブロッキング状態を確認する
- 1 ずつ反復します (これは、 usleep
time_elapsed
を使用して 1e-6 秒を意味します) - と比較
time_elapsed
してくださいtimeout
。(これが私が話す問題です) usleep(1)
- 反復ごとにシステム時刻を取得する (遅いが正確)
- 私はこれを行う方法を知っています。それについての回答を投稿しないでください。
timeout
との競合time_elapsed
そして気になるのがこちら。10e-6 秒間スリープしているtimeout
間、ミリ秒 (10e-3) 単位になります。usleep
したがって、 mytime_elapsed
は よりも 1000 倍正確になりtimeout
ます。(と等しい演算を除算せずに下3桁を切り捨てたい。除算アルゴリズムが遅すぎる。 time_elapsed
floor($time_elapsed/1000)
概要
変数を 1000 で割らずに 1000 倍小さくしたいのですが、データを削除したいだけです。バイナリではビットシフト演算子を使用しますが、10 進システムに適用する方法がわかりません。
コードサンプル:
SO を使用している人が理論的な質問に答えられない場合、彼らは本当にコードに飢えていることがあります。ここにあります:
floor($time_elapsed/1000);
このコードをもっと速いものに置き換えたいです。質問自体はタイムアウトでいっぱいですが、質問のタイトルはそのデータの切り捨てに関するものであることに注意してください。他のユーザーは、タイミング以外の目的でソリューションが役立つ場合があります。