• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#的StringBuilder以及string字符串拼接的效率对照

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
今天公司一个做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("\r\n");

            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("\r\n");


            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; }
    }



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【C#】添加引用方式抛出和捕获干净的WebService异常发布时间:2022-07-13
下一篇:
C#sha256加密算法发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap