コガネブログ

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

【Unity】複数のリソースの読み込み速度の検証結果

複数のリソースを読み込む場合に
Resources.Load で一個ずつ読み込むか
Resources.LoadAll で一度に読み込むか
どちらの方が高速なのか気になったので検証しました

  • Unityのバージョンは 4.6.1f1 で、Unity エディタ上で検証
  • Resources フォルダに Textures フォルダを作成して
    32 枚の 2048 x 2048 の白単色の画像を格納
  • テクスチャの設定は Max Size 2048、Format は Truecolor

Project ビューの状態

f:id:baba_s:20150131203332p:plain

テクスチャの設定

f:id:baba_s:20150131203340p:plain

f:id:baba_s:20150131203403p:plain

Resources.Load で一個ずつ読み込む速度の検証スクリプト

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    private void Awake()
    {
        var startTime = Time.realtimeSinceStartup;
        Resources.Load<Texture>( "Textures/0001" );
        Resources.Load<Texture>( "Textures/0002" );
        Resources.Load<Texture>( "Textures/0003" );
        Resources.Load<Texture>( "Textures/0004" );
        Resources.Load<Texture>( "Textures/0005" );
        Resources.Load<Texture>( "Textures/0006" );
        Resources.Load<Texture>( "Textures/0007" );
        Resources.Load<Texture>( "Textures/0008" );
        Resources.Load<Texture>( "Textures/0009" );
        Resources.Load<Texture>( "Textures/0010" );
        Resources.Load<Texture>( "Textures/0011" );
        Resources.Load<Texture>( "Textures/0012" );
        Resources.Load<Texture>( "Textures/0013" );
        Resources.Load<Texture>( "Textures/0014" );
        Resources.Load<Texture>( "Textures/0015" );
        Resources.Load<Texture>( "Textures/0016" );
        Resources.Load<Texture>( "Textures/0017" );
        Resources.Load<Texture>( "Textures/0018" );
        Resources.Load<Texture>( "Textures/0019" );
        Resources.Load<Texture>( "Textures/0020" );
        Resources.Load<Texture>( "Textures/0021" );
        Resources.Load<Texture>( "Textures/0022" );
        Resources.Load<Texture>( "Textures/0023" );
        Resources.Load<Texture>( "Textures/0024" );
        Resources.Load<Texture>( "Textures/0025" );
        Resources.Load<Texture>( "Textures/0026" );
        Resources.Load<Texture>( "Textures/0027" );
        Resources.Load<Texture>( "Textures/0028" );
        Resources.Load<Texture>( "Textures/0029" );
        Resources.Load<Texture>( "Textures/0030" );
        Resources.Load<Texture>( "Textures/0031" );
        Resources.Load<Texture>( "Textures/0032" );
        var result = Time.realtimeSinceStartup - startTime;
        Debug.Log( result );
    }
}

Resources.LoadAll で一度に読み込む速度の検証スクリプト

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    private void Awake()
    {
        var startTime = Time.realtimeSinceStartup;
        Resources.LoadAll<Texture>( "Textures" );
        var result = Time.realtimeSinceStartup - startTime;
        Debug.Log( result );
    }
}

検証結果

方法 結果
Resources.Load で一個ずつ読み込む 2.8619552 秒
Resources.LoadAll で一度に読み込む 2.8638346 秒

複数のテクスチャを読み込む速度はどちらの方法も概ね同じ速さでした
今回はテクスチャでのみ検証を行いましたが
他の種類のリソースも同じ結果になるかなと思っています