検証用スクリプト
using System.Collections.Generic; using System.Diagnostics; using System.Linq; using UnityEngine; using Debug = UnityEngine.Debug; public class Example : MonoBehaviour { private void Start() { var count = 10000; var value = count - 1; var array = Enumerable.Range( 0, count ).ToArray(); var hashSet = new HashSet<int>( array ); var sw1 = new Stopwatch(); sw1.Start(); for ( int i = 0; i < count; i++ ) { var result = array.Contains( value ); } sw1.Stop(); var sw2 = new Stopwatch(); sw2.Start(); for ( int i = 0; i < count; i++ ) { var result = hashSet.Contains( value ); } sw2.Stop(); Debug.Log( sw1.Elapsed.TotalSeconds ); Debug.Log( sw2.Elapsed.TotalSeconds ); } }
配列と HashSet に10,000 個の要素を格納して
末尾の項目を Contains で取得するまでにかかる時間を検証
検証結果
メソッド | かかった時間 |
---|---|
Array.Contains | 18.810 秒 |
HashSet.Contains | 0.001 秒 |