2012/01/30(月) [n年前の日記]
#1 [processing] 先日作成したストップウォッチを少し高速化
先日、Processingで作成したストップウォッチ?をネットブック機 IdeaPad S10-2で動かしたら全然処理が間に合ってなかったので、少し修正。
修正を加える前の予想では、おそらくキーやマウスボタンの割り込みは、表示フレームレートとは無関係に入ってくれるのだろうと。であれば、キー入力等の割り込み内で時間の取得や記録をしたほうが正確さが増すのではないか、と想像して修正したのだけど。期待通りの結果は得られなかった。
どうやら、Processingにおいて、キーやマウスボタンの入力は、表示フレームレートに支配される模様。おそらく、表示フレームレートのタイミングで、キーやマウスの入力結果を取得、もしくはどこかに記録して、それを参照させている。というのも、表示フレームレートを24FPSにすると、時間の取得結果も24FPS単位になり、60FPSにすれば取得結果も60FPS単位になるように見えたからで。
つまり現状の自分の知識では、Processingで厳密に時間を測定するアプリは書けない、と考えたほうが良さそう。まあ、24〜60FPSの精度でも十分なアプリを書くなら問題ないと思うけど。
- どうにか最低限動くようにウインドウサイズを小さくした。
- 時間を記録する処理を、キーやマウスボタンの割り込み内で行うようにした。
- 内部的にはフレーム値ではなく、ミリ秒で取得と記録をすることにした。
修正を加える前の予想では、おそらくキーやマウスボタンの割り込みは、表示フレームレートとは無関係に入ってくれるのだろうと。であれば、キー入力等の割り込み内で時間の取得や記録をしたほうが正確さが増すのではないか、と想像して修正したのだけど。期待通りの結果は得られなかった。
どうやら、Processingにおいて、キーやマウスボタンの入力は、表示フレームレートに支配される模様。おそらく、表示フレームレートのタイミングで、キーやマウスの入力結果を取得、もしくはどこかに記録して、それを参照させている。というのも、表示フレームレートを24FPSにすると、時間の取得結果も24FPS単位になり、60FPSにすれば取得結果も60FPS単位になるように見えたからで。
つまり現状の自分の知識では、Processingで厳密に時間を測定するアプリは書けない、と考えたほうが良さそう。まあ、24〜60FPSの精度でも十分なアプリを書くなら問題ないと思うけど。
[ ツッコむ ]
以上です。