zoukankan      html  css  js  c++  java
  • 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时,性能对比图:

    image

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

    image

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

    image

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

    image

    综上所述:

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

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

    本文由博主(YinaPan)原创或者转载,如若转载请务必注明出处,谢谢合作!
  • 相关阅读:
    AJAX实现文件下载
    正则表达式收集
    C# Winform使用线程改变窗体控件的属性
    C# DataTable转List<Model>通用类
    C# ExcelHelper
    CSS浏览器兼容
    asp.net mvc Razor视图引擎
    『C程序设计』读书笔记系列文章之第八章 预编译处理
    .NET发邮件错误之"Could not access 'CDO.Message' object."
    英语词组日常积累
  • 原文地址:https://www.cnblogs.com/YinaPan/p/sbformat.html
Copyright © 2011-2022 走看看