zoukankan      html  css  js  c++  java
  • string与StringBuilder之性能比较

    知道“StringBuilderstring性能强”好多年了,近日无聊病发作,就把这两个家伙给动了手术:

    using System;

    using System.Text;

    namespace ConsoleApplication1

    {

        classProgram

        {

            staticvoid Main(string[] args)

            {

                int start = Environment.TickCount;    //计时打点

                fun1();

                int middle = Environment.TickCount;  //计时打点

                fun2();

                int end = Environment.TickCount;  //计时打点

                Console.WriteLine("string         运行时间 {0} ", 0.001 * (middle - start));

                Console.WriteLine("StringBuilder  运行时间 {0} ", 0.001 * (end - middle));

                Console.ReadKey();

            }

           

            //fun1fun2是两个结构功能相同的无聊耗时方法

            privatestaticvoid fun1()

            {

                for (int i = 0; i < 1000; i++)

                {

                    string s = "";     

                    for (int j = 0; j < 200; j++)

                    {

                        s += "Outer index = ";

                        s += i;

                        s += " Inner index = ";

                        s += j;

                        s += " ";

                    }

                }

            }

     

            privatestaticvoid fun2()

            {

                for (int i = 0; i < 1000; i++)

                {

                    StringBuilder s = newStringBuilder();

                    for (int j = 0; j < 200; j++)

                    {

                        s.Append("Outer index = ");

                        s.Append(i);

                        s.Append("Inner index = ");

                        s.Append(j);

                        s.Append(" ");

                    }

                }

            }

        }

    }

    可见区别之大。

    用vs自带的性能分析工具分析如下(过程比较慢):

    查看函数详细信息:

    可见fun1明显比fun2的非独占分配数大,如果想进一步了解细节,可点击相应区域,结果如下

     接下去,你懂得。。。

  • 相关阅读:
    java谜题
    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 的解决办
    考虑用静态工厂代替构造器
    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 的解决办
    100 个高质量的 XHTML/CSS 模板(上)
    登陆时的安全性
    Flex 开发架构(五): Mate-基于标签的框架
    NIO的基本概念及简单示例
    Flex与jsp的联系
    福布斯:Sun的六大失误
  • 原文地址:https://www.cnblogs.com/Hollson/p/3276723.html
Copyright © 2011-2022 走看看