神様は有休消化中です。

Unity関連の技術ネタを書いてます。

【Unity5】【C#】string.StartsWithが激重いのでstring.IndexOfを使おう

先日Unityのプロファイラーを眺めていたところ、string.StartsWithが激重いことに気づいたので共有。

テスト用にこんなスクリプトを実行。

using UnityEngine;
using System.Collections;

public class Hoge : MonoBehaviour
{
	void Update () {
		string hoge = "abcdef";

		for (int i = 0; i < 1000; i++) {
			bool check = false;
			if(hoge.StartsWith("abc")){
				check = true;
			}
		}
	}
}

これをプロファイラーで確認すると、だいたい2.5msくらい。遅っ。

判定をstring.IndexOfに変更

//if(hoge.StartsWith("abc")){
if(hoge.IndexOf ("abc") == 0){
	check = true;
}

これを確認すると、だいたい0.3msくらい。2.2msほど軽くなりました。
なんでStartsWithは重いのかわからん・・・が、今後は使用を控えようと思います。