読者です 読者をやめる 読者になる 読者になる

コガネブログ

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

【Unity】一度読み込んだリソースをキャッシュする場合としない場合で読み込み速度にどれくらい差が出るか検証しました

Unity Unity5.3

Resources.Loadでリソースを読み込む際に
一度読み込んだリソースをキャッシュするかしないかで
どれくらい速度に差が出るか気になったので検証しました

検証環境

検証に使用するリソース

1024x1024のテクスチャ

読み込む方法

キャッシュしない場合

キャッシュしない場合はResources.Loadを直接使用します

Resources.Load<Texture>( "image" );

キャッシュする場合

キャッシュする場合は下記のようなラッパークラスを作成して使用します

using UnityEngine;
using System.Collections.Generic;

public static class Loader
{
    private static readonly Dictionary<string, Texture> mList = new Dictionary<string, Texture>();

    public static Texture Load( string path )
    {
        if ( !mList.ContainsKey( path ) )
        {
            mList[ path ] = Resources.Load<Texture>( path );
        }
        return mList[ path ];
    }

    public static void Clear()
    {
        mList.Clear();
    }
}
Loader.Load( "image" );

読み込み時間(秒)の比較

形式 1,000件 10,000件 100,000件
キャッシュしない場合 0.0139160200 0.135650600 1.34741200
キャッシュする場合 0.0009155273 0.007965088 0.08035278

検証用のスクリプト