stl の罠

あ〜、やっちまった.

描画周りに PVRSDK なんかをつかって OpenGL ES2.0 のツールを作っていたんだけどさ、そしたら
デバッグ実行するとフレームレートが時間に応じて下がっていくのよ.

リリースだと問題なく安定したフレームレートが返ってくるんだけど、ちょっと気持ち悪いなってことで
延々とデバッグしていたわけですよ.

まず最初に疑ったのは、フレームレートを安定させるために利用した自作のウェイトタイマーを疑ったわけ.

ひょっとしてタイマーの精度が悪いんじゃ無いかと思って、timeGetTime やら QueryPerformanceCounter の
挙動を確認してみたわけですよ.
でも、どうにも期待している値が返ってきてしまうわけです.

でもって、フレーム処理の時間計測を行ってみると、フレーム処理が徐々に伸びていくんですよね.

う〜むってうなって、 PVRSDK の挙動を疑ってみたわけです.
でも、どうにも gl の命令は期待通りに動いているわけです.

で、結局、ぐるぐると探し回っていると、数年前に作った文字列描画の処理で std::vector を使っていて
しかもフレーム毎に異なるインスタンスが生成されるようなコードになっていましたとさ...

かなりの時間を無駄につかっちまったよ...

まぁ、悔やんでも過ぎてしまった時間が戻るわけじゃないので、仕方が無い...

デバッグ中にPVRSDK のサンプルの動作を追ってみて結構ソースがおもしろかったってのと、タイマー関連で
RDTSC(Read Time Stamp Counter)のこととかを勉強できたのがせめてもの収穫としよう.