プログラミング ようやっとFPSが担保できた話
あいさつ
どうも、はかせです。
今回はDebugビルドでも60以上のFPSを担保できるようになりました。
なのでその話です。
ボトルネックは?
大きく分けて二つです。
・毎フレーム作っていたローカル変数
・デバッグ用のログ出力
一つずつ話します。
毎フレーム作っていたローカル変数
これは前回の修正でもある程度減らしたんですが、
今回の修正で描画にかかわる部分に関しては全てメンバ変数に上げました。
毎フレーム作っていたのは弾用の構造体データなんですが、
この構造体座標データとか持ってるんでサイズが112バイトと少々大きいです。
たったそれだけかよって思うかもしれませんが、
弾幕シューティングという性質上数百~数千の弾が発生して、
それにそれぞれこの構造体が作られあてがわれるので
塵つもで1~2ミリ秒ほど食っていきます。
デバッグ用のログ出力
ログの出力ってのは割と馬鹿にならないコストになります。
というのもログの出力ってのは結論ストリームを使ったIO処理です。
IO処理が通常の処理に比べて重いのは自明の理なのでやっぱり重いです。
呼ぶ頻度にもよりますが、
毎フレーム呼べばそれだけで1~2ミリ秒くらい食っていきます。
結果
それでは結果です。
60どころか190出てますねw
実際Releaseビルドでやっても似たような結果でした。
あとがき
今回はDebugビルドでもFPS担保できるようになった話でした。
計算量の削減とかローカル変数のメンバ化とか
色々黒魔術チックなことしましたが、
結果を見る限り、60出すだけならログ外すだけでよかった気がしますw
それでは今回はこの辺でノシ
今回作ったものはgithubに上げました
github.com