Timerクラスの正確さについて

ActionScript3.0にはTimerクラスが追加され、従来のsetIntervalの代わりに使うことが想定されていますが、あんまり過信するほど正確ではありませんよというお話をBIT-101さんがエントリされています。

といっても、Timerクラス自身はきちんと1000ミリ秒(1秒)間隔で実行されまが、そこに、Timerをトリガーとして実行される関数の処理時間が関わってきます。

通常のプロジェクトで使うような関数なら、0.0何秒の誤差なので許容範囲なのですが、BIT-101さんの記事中のサンプルのように、100万回forループとかの付加の大きい処理を間で実行すると、1.6秒間隔になり、0.6秒もの誤差が生じます。

Timer自身は、きちんと1000ミリ秒で実行されていますが、1000ミリ秒後に実行されるforループの処理に600ミリ秒かかり、次にTimerがカウントを開始するのは、そのループ終了後(1600ミリ秒後)になるからです。

僕としては、まぁそんなに負荷のかかる処理はめったにしないだろうし、それよりはTimerクラスの利便性に感動して使いまくる予感がしています。
一方、ものすごく正確な時間測定が必要な案件の場合は、BIT-101さんが書いた「Making Things Move!」の最後の方に書かれている「onEnterFrameベースのカウント処理」の方が良いですよと仰られてます。ちなみに「Making Things Move!」のActionScript3.0版の執筆も終えられたそうで、2007年早々に発売されるそうです。Amazon.co.jpでの予約受付も始まっていますね。

このエントリーをはてなブックマークに追加
はてなブックマーク - Timerクラスの正確さについて

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.trick7.com/blog/2006/11/30-115701.php/trackback
Listed below are links to weblogs that reference
Timerクラスの正確さについて from trick7

Return to page top