TIC-80でゲーム作っていたとき、最初のほうにcollisionの処理がどれだけ回るか調べたりしていたので、パフォーマンスが落ちていないか、fpsを表示するところからやりました。メモリはメモリオーバーで死んだのを観測して、その時に追加しました。メモリはあまり気にせずテーブルにどんどん積んでいる感じありますね。
fpsの表示
TIC関数は60fpsで呼ばれます。time()関数で経過時間をmillisecondsで取得できるので、TIC関数の先頭で、前フレームの経過時間と現フレームの時刻の差分をとって、デルタタイムやfpsを計算しています。
prev_time=time()/1000
frame_time_sum=0
frame_times={}
FPS=0
function TIC()
-- calc fps
local ct=time()/1000
local dt=ct-prev_time
prev_time=ct
frame_times[#frame_times+1]=dt
frame_time_sum=frame_time_sum+dt
local frame_num=15
if #frame_times > frame_num then
frame_time_sum = frame_time_sum-frame_times[1]
remove(frame_times,1)
end
FPS = frame_num / frame_time_sum
-- ゲームの処理
print(string.format("%6.3f",FPS), 0, 0) end
end
使用メモリの表示
luaのcollectgarbage("count")で、luaが使用しているメモリがキロバイト単位で取得できるのでそれを表示しています。
if _DEBUG then
local memuse=collectgarbage("count")
print_dbg(string.format("mem:%6.1fKB",memuse),0,8+6)
end
まとめ
少し長めの開発をする場合、開発の初期段階で表示しておいて、メモリリークしてないか、パフォーマンス落ちてないか、継続的に観測しておくのがよいと思います。パフォーマンスに関して、細かい処理単位で計測などは行ってないですが、time関数で括ることで計測するものを作成できると思います。

0 件のコメント:
コメントを投稿