コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】PlayerPrefs.SetString と File.WriteAllText の速度比較

検証用コード

using System.Diagnostics;
using System.IO;
using System.Text;
using UnityEngine;
using Debug = UnityEngine.Debug;

public class Example : MonoBehaviour
{
    private void Start()
    {
        const string data  = "ピカチュウ";
        const int    count = 10_000;

        {
            const string key = "data";

            var sw = Stopwatch.StartNew();

            for ( var i = 0; i < count; i++ )
            {
                PlayerPrefs.SetString( key, data );
                PlayerPrefs.Save();
            }

            Debug.Log( sw.Elapsed.TotalSeconds.ToString( "0.00" ) );
        }

        {
            var path = $"{Application.persistentDataPath}/data.txt";

            var sw = Stopwatch.StartNew();

            for ( var i = 0; i < count; i++ )
            {
                File.WriteAllText( path, data );
            }

            Debug.Log( sw.Elapsed.TotalSeconds.ToString( "0.00" ) );
        }

        {
            var path     = $"{Application.persistentDataPath}/data.bytes";
            var encoding = Encoding.UTF8;

            var sw = Stopwatch.StartNew();

            for ( var i = 0; i < count; i++ )
            {
                File.WriteAllBytes( path, encoding.GetBytes( data ) );
            }

            Debug.Log( sw.Elapsed.TotalSeconds.ToString( "0.00" ) );
        }
    }
}

検証結果

MacBook Pro 2021

  • macOS Monterey バージョン 12.5.1
項目 時間
PlayerPrefs.SetString と PlayerPrefs.Save 1.91 秒
File.WriteAllText 0.82 秒
File.WriteAllBytes 0.82 秒

Android

  • Google Pixel 6a
  • Android バージョン 13
項目 時間
PlayerPrefs.SetString と PlayerPrefs.Save 0.18 秒
File.WriteAllText 1.29 秒
File.WriteAllBytes 0.83 秒

iOS

  • iPad mini (第6世代)
  • システムバージョン 15.5
項目 時間
PlayerPrefs.SetString と PlayerPrefs.Save 0.02 秒
File.WriteAllText 0.92 秒
File.WriteAllBytes 0.87 秒

検証環境

  • Unity 2022.1.11f1