コガネブログ

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

【Unity】string.StartsWith と string.EndsWith は処理速度が遅いので最適化した拡張メソッドを自作する

ソースコード

上記の CustomStartsWith 関数と CustomEndsWith 関数を
string.StartsWith と string.EndsWith の代わりに使用します

速度比較

検証環境

  • Unity 2017.1.1f1

検証用スクリプト

using UnityEngine;

public sealed class Example : MonoBehaviour
{
    private void Awake()
    {
        int count = 10000;
        var str = "ピカチュウ";

        {
            var startTime = Time.realtimeSinceStartup;
            for ( int i = 0; i < count; i++ )
            {
                str.StartsWith( "ピ" );
                str.EndsWith( "ウ" );
            }
            var elapsedTime = Time.realtimeSinceStartup - startTime;
            Debug.Log( elapsedTime );
        }

        {
            var startTime = Time.realtimeSinceStartup;
            for ( int i = 0; i < count; i++ )
            {
                str.CustomStartsWith( "ピ" );
                str.CustomEndsWith( "ウ" );
            }
            var elapsedTime = Time.realtimeSinceStartup - startTime;
            Debug.Log( elapsedTime );
        }
    }
}

検証結果

関数 処理時間
StartsWith、EndsWith 0.1105242 秒
CustomStartsWith、CustomEndsWith 0.0010457 秒

参考サイト様

関連記事