はじめに
Resources.Loadでリソースを読み込む際に
一度読み込んだリソースをキャッシュするかしないかで
どれくらい速度に差が出るか気になったので検証しました
検証環境
- Unity:5.3.1f1
- OS:Android
- モデル番号:Nexus 7
- Androidバージョン:5.0.1
検証に使用するリソース
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 |