zoukankan      html  css  js  c++  java
  • C#的StringBuilder 以及string字符串拼接的效率对照

    今天公司一个做Unity3d的人在说字符串拼接的一个效率问题,他觉得string拼接会产生新的一个内存空间,假设不及时回收会产生大量的碎片,特别是在Unity3d这样一个Updata环境下,由于每一帧都会调用,所以假设使用简单的拼接的话,就会产生非常多碎片,从而影响手机发热。

    他的想法是用StringBuilder去直接改动内存,而不进行一个拼接会更加直接有效的去运行,速度也会更快。

    由于认为这个东西有点意思,所以我就想做个对照来看,是不是自己老了记错了事情,特别是我是做服务端的,效率才是我考虑的,而内存在2014年的今天,难道白菜还不比内存贵?呵呵!

    下面是一个简单的代码,还有结果图,我没什么文化,所以就不继续说明了,有想法的能够评论指点一下,谢谢!

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("1000万次运算:");
                DateTime dt = DateTime.Now;
                xxx xxx=new xxx();
                const int testNum = 10000000;
                StringBuilder strbuilder = new StringBuilder();
                strbuilder.Append("M");
                for (int i = 0; i < testNum; i++)
                {
                    strbuilder.Append(i.ToString(),0,i.ToString().Length);
                    xxx.text = strbuilder.ToString();
                    strbuilder.Remove(0, strbuilder.Length-1);
                }
                Console.WriteLine("StringBuilder:" + (DateTime.Now - dt).Ticks);
                Console.WriteLine("
    ");
    
                strbuilder.Remove(0, strbuilder.Length);
                strbuilder.Clear();
                strbuilder = null;
                dt = DateTime.Now;
                for (int i = 0; i < testNum; i++)
                {
                    xxx.text = i+"M";
                }
                Console.WriteLine("String拼接:" + (DateTime.Now - dt).Ticks);
                Console.WriteLine("
    ");
    
    
                dt = DateTime.Now;
                for (int i = 0; i < testNum; i++)
                {
                    xxx.text = string.Format("%Sm", i.ToString());
                }
                Console.WriteLine("String.Format拼接:" + (DateTime.Now - dt).Ticks);
                Console.ReadLine();
            }
        }
        public class xxx
        {
            public string text { get; set; }
        }



    最后结论就是,简单的拼接会比不论什么函数和方法来得有效!!欢迎拍砖!!

  • 相关阅读:
    Unity3D Asset文件导出3DMax 可编辑格式
    Android 内存管理
    常见面试之机器学习算法思想简单梳理
    最短的计算大数乘法的c程序
    MQTT---HiveMQ源代码具体解释(一)概览
    ZMQ源代码分析(一)-- 基础数据结构的实现
    JavaScript 性能分析新工具 OneProfile
    firefox关于about:config的常用配置
    postgres数据库中的数据转换
    postgres的强制类型转换与时间函数
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4553967.html
Copyright © 2011-2022 走看看