【unity】セーブ系のGC検証を行ってみる。


あらすじ

たまたまprofilerで検証していてなんか重たいと思っていたら、セーブ関係がGC Allocしていたので、ちょっと検証してみました。


比較対象

大体3つ程を比較してみました。

・EasySave3

・System.IOでの書き込み

・PlayerPrefs

ちなみに検証サンプルはint配列1000個分(int[] intarray = new int[1000])です。たぶん、ここらへんは数字比較できれば小さくても問題ないと思います。


結果

・EasySave3

GCAllocはある程度そこそこ出ているものの、

PlayerPrefsより重たくないっぽい

スクリーンショット 2021-02-20 13.50.04_EasySave

スクリーンショット 2021-02-20 13.50.55_EasySave

・System.IOでの書き込み

GCAllocはほとんど出ていないけども、

ファイルが上がってくるまでにだいぶラグがあるので、

工夫が必要っぽい

スクリーンショット 2021-02-20 13.54.10_IO

スクリーンショット 2021-02-20 13.54.19_IO

・PlayerPrefs

unityのデフォルトのセーブ機能。

一番GCAllocが出ているっぽい。やばい。

スクリーンショット 2021-02-20 13.54.48_Prefs

スクリーンショット 2021-02-20 13.54.58_Prefs

結論

出具合はどちらにせよ、どの手法にしてもセーブ(ファイル書き込み絡み)はGCAllocが出るっぽい(おそらくはファイル系IO関係上出るかもしれません)。

ゲームのタイミング次第で違和感を出さずに済むかもしれないので、工夫が大事かもしれません(常時セーブはしないほうが良いのはわかった)。


この記事が気に入ったらサポートをしてみませんか?