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 = 1000; void TestSb1() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < m_count; ++i) { sb.Append("Test_"); sb.Append(i); m_result = sb.ToString(); } } void TestSb2() { for (int i = 0; i < m_count; ++i) { m_sb.Length = 0; m_sb.Append("Test_"); m_sb.Append(i); m_result = m_sb.ToString(); } } void TestFormat() { for (int i = 0; i < m_count; ++i) { m_result = string.Format("Test_{0}", i); } } void TestAdd() { for (int i = 0; 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时,性能对比图:
当count=10时,性能对比图:
当count=100时,性能对比图:
当count=1000时,性能对比图:
综上所述:
StringBuilder的性能优于string.Format,但是需要格式化的东西不多时,性能差距不大。
据一本书上说:string.Format方法内部使用StringBuilder进行字符串的格式化的。
本文由博主(YinaPan)原创或者转载,如若转载请务必注明出处,谢谢合作!