2011-08-15 2 views
3

私はScheduledTask []を理解するのに少し苦労しています。私は、次のコードSchedule Mathematicaのタスク、使用する時間間隔に制限はありますか?

dt = 0.01; 
c = 0; 
Dynamic[c] 
task = CreateScheduledTask[c += 1, {dt, 100}]; 
StartScheduledTask[task]; 

Iが得る値51で終わる 'C' を実行すると、これは、V 8.01を使用して、Windows 7は、64ビットのV 8

に加え、期待されない100として。

上記の 'dt'を大きい値、たとえば0.02、または0.02秒より大きい値に変更すると、毎回100回ずつ取得されます。

私が 'dt'を0.005にすると、私はc = 27になります。 'dt'を0.0025に、cを18に、等々とする。

したがって、 'dt'制限(CPU時間精度)は0.02と思われます。これは20ミリ秒です。

しかし、他のウェブサイトからは、Windows 7(ハードウェアの種類によって異なる)がこれよりはるかに小さいCPUクロック解像度を提供できることがわかります。 1〜10ミリ秒でよい。

ここに何かが見つからない、またはこの機能を誤解しましたか?この関数の

ヘルプは、私がこの使ってMathematica独自のマニュアルのより多くの情報を見つけることができませんでしたが、私はそれを見落としている可能性が

creates a task that will try evaluating expr once every time seconds up to count times total 

を言います。この関数の

ドキュメントはhttp://reference.wolfram.com/mathematica/ref/CreateScheduledTask.html

おかげ psです。完了したら、タスクを削除するには、コマンドが

RemoveScheduledTask[task] 

またはすべてをきれいにすることです:私が持っている

RemoveScheduledTask[ScheduledTasks[]] 

ハードウェアは次のとおりです。インテルi7のCPUの930、2.8 GHzの4つのウィンドウが、コア

+3

'CreateScheduledTask'のドキュメントの「More Information」の下に、「デフォルトでexprを評価するのに必要な時間が時間より大きい場合、次回の評価はスキップされます。多分それはここでの問題です(しかし、私はCに1を加えるのに0.01秒よりもはるかに時間がかかると思ったでしょう)。 – Heike

+0

私は時計の時間が限界であり、数字に1を加えないと思う。私のシステムでは、タスククロックはスロットあたり約20ミリ秒より速いレートで実行することができません。これは0.02秒です。そして、これは私が見ていたものです。しかし、私はあなたに同意します。この機能に関する文書は、より詳細で明確にすることができます。 – Nasser

答えて

4

タイマは、スケジューラのスケジューラの粒度がはるかに小さいことを、ns粒度で測定することができます。私は、(herehere)がそれぞれ10-15msと20msの倍数との間であることを発見しました。私はあなたが確実にするためには、少なくとも20ミリ秒の間隔を使用する必要があると思うし、それでもスロットを得ることが保証されていないので、あなたはそれに依存する必要はありません。

+0

+1、ありがとう。はい、20ミリ秒は実際に私が見ていたものです。だから私の計算ミス。修正されました。 10〜20msは私が読むものと一致します。これは「可能性のある問題」の文書に記載する必要があります。 – Nasser

関連する問題