静的な起点から経過している時間を、秒単位で返します。
構文:
用法:
result = Timer
戻り値:
静的な起点からの、秒単位での経過時間を、
double 精度で返します。
記述:
Timer 関数は、コードのセクションを実行するのにどれくらい時間がかかるかを見つけたり、コードのタイミングをコントロールするのに、役立ちます。
プログラムの2つのポイントの間で、どのくらいの時間がかかるかを見つけるには、Timer で、開始と終わりの値を記録して、次に、終わりの値から開始の値を、引き算します。
プラットホームによっては、Timer の値は、真夜中(下を参考)に、ゼロにリセットされます。このため、始めと終わりの時間が、真夜中をまたぐ場合は、引き算結果がマイナスになることがあります。
これは、プログラムで意外な挙動を引き起す場合があります。この場合は、86400 (24時間の秒数) を加えると、正しい結果になります。
1日より長い時間がかかるなら、それは、経過した日数をチェックする必要があります。
Timer で返される値は、春と秋では、DST(日光節約時間:夏時間)に対して、システム・クロックを、自動交換することに影響を受けません。
例:
'' TIMER 関数を使う例
'' 注意:
正しい待ち方について、本文を参考して下さい。
Dim Start
As Double
Print "2.5 秒、待ちます。"
Start =
Timer
Do
Sleep 1,
1
Loop Until (Timer - Start
) >
2.
5
Print "完了"
Sleep
プログラムの処理時間計測 Timer2.bas
プラットホーム差:
-
Win32とリナックスでは、プログラムを 0.1 秒以上の時間、待たせるときには、Sleep を使うと良いでしょう。他のプログラムは、待ちの間に、実行することができます。
もっと短い時間、遅らせたいときは、TIMER を使って繰り返しさせると、より正確な時間になります。
-
プラットホームによって、選択する起点が異なります。
Windowsでは、時間は、コンピュータが起動した時点を起点にして測定されます。
DOSでは、時間は、1970年1月1日を起点にして測定されます。
- DOS ユーザへの注意:
今日、1970年以来の秒数が、10^9 以上になっています。したがって、Single-精度の変数には格納できません。また、その時、それを掛けて(約1/10秒を得る、など)、32ビットの整数変数に格納してはいけません。
-
使うコンピュータによって、TIMERの精度は異なります。
プロセッサが、精密タイマ(インテルの Performance Counter Pentium プロセッサーが持っているような)を持っていて、OS がそれを使えるなら、精度は、プロセッサ時計にリンクして、マイクロ秒まで使えます。
古いプロセッサ(386、486)、および、DOSではいつも、分解能は 1/18 秒です。
-
DOS で、TIMER を使うと、ディスクアクセスを引き起こす場合があるようです。分析と解決方法は、フォーラム∞ を参考下さい。
QB からの違い:
-
QB では、TIMER は、最後の真夜中から秒数を返しました。また、その精度は 1/18 秒でした。
参照: