【ハルシオンブログ】UnityC#で文字列の結合ってStringBuilder使ってますか?どれくらいStringの結合と速度が違うのか測ってみた。
こんにちは。
ブログかくのを忘れていた坂内っす。
UnityC#で文字列の結合を行う際に、StringBuilderを使うといいって話よく聞きますよね。
どれくらいいいのかちょっと確認してみました。
1から10000の文字を結合する処理をstringの結合と、StringBuilderでの結合の2パターンで書いてみました。
[Blog20220613.cs]
上側がstring結合、下側がStringBuilderでの結合になります。
これを実行した結果はこちら。

やば・・・・・!?
約47倍!?
StringBuilder早すぎじゃないですかね?
100回や500回とかの結合ならそこまで差はなさそうですが、1000回を超すと差がはっきりと出てきますね!
文字列の結合なので、こんな感じでアルファベット並べたのを繰り返した場合、さらに差がはっきりと出ますね。

これ凄いですね。
今後文字列の結合にはStringBuilderを使おうと心に決めました。
では、あでゅ~ノシ
ブログかくのを忘れていた坂内っす。
UnityC#で文字列の結合を行う際に、StringBuilderを使うといいって話よく聞きますよね。
どれくらいいいのかちょっと確認してみました。
1から10000の文字を結合する処理をstringの結合と、StringBuilderでの結合の2パターンで書いてみました。
[Blog20220613.cs]
using System.Text;
using UnityEngine;
public class Blog20220613 : MonoBehaviour
{
void Start()
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
// stringの結合
sw.Start();
string str = "";
for (int i = 0; i < 10000; i++) {
str += i.ToString();
}
sw.Stop();
Debug.Log("string結合:" + str);
Debug.Log(sw.ElapsedMilliseconds);
sw.Reset();
// StringBuilderでの結合
sw.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.Append(i.ToString());
}
sw.Stop();
Debug.Log("StringBuilder結合:" + sb.ToString());
Debug.Log(sw.ElapsedMilliseconds);
}
}
上側がstring結合、下側がStringBuilderでの結合になります。
これを実行した結果はこちら。

やば・・・・・!?
約47倍!?
StringBuilder早すぎじゃないですかね?
100回や500回とかの結合ならそこまで差はなさそうですが、1000回を超すと差がはっきりと出てきますね!
文字列の結合なので、こんな感じでアルファベット並べたのを繰り返した場合、さらに差がはっきりと出ますね。
using System.Text;
using UnityEngine;
public class Blog20220613 : MonoBehaviour
{
void Start()
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
// stringの結合
sw.Start();
string str = "";
for (int i = 0; i < 10000; i++) {
str += "abcdefghijklmnopqrstuvwxyz";
}
sw.Stop();
Debug.Log("string結合:" + str);
Debug.Log(sw.ElapsedMilliseconds);
sw.Reset();
// stringbuilderでの結合
sw.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.Append("abcdefghijklmnopqrstuvwxyz");
}
sw.Stop();
Debug.Log("StringBuilder結合:" + sb.ToString());
Debug.Log(sw.ElapsedMilliseconds);
}
}

これ凄いですね。
今後文字列の結合にはStringBuilderを使おうと心に決めました。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】画像のアスペクト比を一定にしながらサイズを変更する | 【ハルシオンブログ】同じ文字列を連続してつなげたいとき »
コメント
| h o m e |