知识大全 三种字符串加法运算的效率问题
Posted 加法
篇首语:如果不能改变结果,那就完善过程。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 三种字符串加法运算的效率问题相关的知识,希望对你有一定的参考价值。
using System; using System Text; namespace ConsoleApplication class Program private const int loopTimes = ; static void Main(string[] args) string str = string Empty; string str = string Empty; StringBuilder sb = new StringBuilder(); DateTime timeStart = DateTime Now; for (int i = ; i < loopTimes; i++) str += i ToString(); str += i ToString(); str += i ToString(); Console WriteLine(string Format( 字符串直接做加法运行 次的时间是: loopTimes DateTime Now Subtract(timeStart))); timeStart = DateTime Now; for (int i = ; i < loopTimes; i++) str += string Format( i i i); Console WriteLine(string Format( 字符串format运行 次的时间是: loopTimes DateTime Now Subtract(timeStart))); timeStart = DateTime Now; for (int i = ; i < loopTimes; i++) sb Append(i); sb Append(i); sb Append(i); Console WriteLine(string Format( stringbuilder运行 次的时间是: loopTimes DateTime Now Subtract(timeStart))); 字符串直接做加法运行 次的时间是: : : 字符串format运行 次的时间是: : : stringbuilder运行 次的时间是: : :
字符串直接做加法运行 次的时间是: : : 字符串format运行 次的时间是: : : stringbuilder运行 次的时间是: : :
从上面的两次循环可以看出来
字符串直接做加法 相当于 的n次方(每一次加法都会留下一个副本) 字符串format 相当于( 的n次方)/X (X >= && X <= ) (format方法每次只留下一个副本 不管里面有几个参数 注 : 最多只能有 个参数) stringbuilder 相当于n * (从始至终都只有本身)
看了上面稍微业余点的说明 相信大家明白了为什么技术主管在抽查代码的时候 看到一堆的字符串加法会火冒三丈了吧 (而且这些副本的销毁是有GC控制的 时间不能确定 所以短时间进行了海量的字符串加法运算 内存会爆掉的 ) 所以技术主管骂人也就可以理解了: 一方面是效率问题 令一方面是内存消耗 在此之外技术主管也看到了你本身的令一个问题:你根本就是一个垃圾代码的制造者!
cha138/Article/program/net/201311/12210相关参考
知识大全 (PHP实现)只使用++运算实现加法,减法,乘法,除法
(PHP实现)只使用++运算实现加法,减法,乘法,除法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
最近经常要对字符串进行匹配和替换操作之前一般使用str_replace或者preg_replace据说strtr的效率不错所以对比了一下复制代码代码如下:$i=;$t=microtime(true
cha138/Article/program/Java/JSP/201311/20012
串(又称字符串)是一种特殊的线性表它的每个结点仅由一个字符组成 在早期的程序设计语言中串仅在输入或输出中以直接量的形式出现并不参与运算随着计算机的发展串在文字编辑词法 扫描符号处理以及定理证明
单链表的运算建立单链表 假设线性表中结点的数据类型是字符我们逐个输入这些字符型的结点并以换行符\\n为输入条件结束标志符动态地建立单链表的常用方法有如下两种()头插法建表①算法思路 从一个空表开始
单链表的运算 建立单链表 假设线性表中结点的数据类型是字符我们逐个输入这些字符型的结点并以换行符\\n为输入条件结束标志符动态地建立单链表 的常用方法有如下两种 ()头插法建表 ①算法思
用单引号代替双引号来包含字符串这样做会更快一些因为PHP会在双引号包围的字符串中搜寻变量单引号则不会注意只有echo能这么做它是一种可以把多个字符串当作参数的“函数”(译注PHP手册中说echo是
概率论中的加法原理和乘法原理是可以证明的吗?加法原理与乘法原理的区别:区分两个原理要做一件事,完成它若是有n类办法,是分类问题,第一类中的方法都是独立的,因此使用加法原理;做一件事,需要分n个步骤,步
Delphi开发技巧:字符串的个数问题[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
Delphi开发技巧:字符串的个数问题[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs