StringBuilder和string.Format性能对比

时间:2023-03-09 00:37:03
StringBuilder和string.Format性能对比

本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/sbformat.html

StringBuilder的性能优于string.Format,但是需要格式化的东西不多时,性能差距不大。

using UnityEngine;
using System.Collections;
using System.Text; public class Test_sb_Format : MonoBehaviour {
private StringBuilder m_sb = new StringBuilder();
private string m_result = null;
private int m_count = ; void TestSb1() {
StringBuilder sb = new StringBuilder();
for (int i = ; i < m_count; ++i) {
sb.Append("Test_");
sb.Append(i);
m_result = sb.ToString();
}
} void TestSb2() {
for (int i = ; i < m_count; ++i) {
m_sb.Length = ;
m_sb.Append("Test_");
m_sb.Append(i);
m_result = m_sb.ToString();
}
}
void TestFormat() {
for (int i = ; i < m_count; ++i) {
m_result = string.Format("Test_{0}", i);
} } void TestAdd() {
for (int i = ; i < m_count; ++i) {
m_result = "Test_{0}" + i;
}
} void Update () {
Profiler.BeginSample("TestSb1");
TestSb1();
Profiler.EndSample(); Profiler.BeginSample("TestSb2");
TestSb2();
Profiler.EndSample(); Profiler.BeginSample("TestFormat");
TestFormat();
Profiler.EndSample(); Profiler.BeginSample("TestAdd");
TestAdd();
Profiler.EndSample(); }
}

当count=1时,性能对比图:

StringBuilder和string.Format性能对比

当count=10时,性能对比图:

StringBuilder和string.Format性能对比

当count=100时,性能对比图:

StringBuilder和string.Format性能对比

当count=1000时,性能对比图:

StringBuilder和string.Format性能对比

综上所述:

StringBuilder的性能优于string.Format,但是需要格式化的东西不多时,性能差距不大。

据一本书上说:string.Format方法内部使用StringBuilder进行字符串的格式化的。