两条语句在效率上有区别么!请详细说明两条语句的执行过程!

string str1 =1+1+ "";
string str2 = (1 + 1).ToString();

芜湖不芜
浏览 433回答 14
14回答

绝地无双

1 没必要纠结这个 2 目测第一个高。 因为第一个可以被编译器优化(release下去看, 结果应该是不一样的), 第一个结果永远不变, 因此可以直接被编译器编译成算好的结果 而第二个, 因为调用了ToString, 编译器不敢优化。 所以应该会慢一点。   不要太过相信“代码跑出来的时间”, 因为有可能是没开优化, 或者被其他的因素影响, 等等。 这个我一般戏称它为:测不准原理。

函数式编程

这里没有任何类型转换。

慕尼黑8549860

第2条效率高,第一条的话应该是先把1+1自动toString之后又加上"", 而第二题省掉了加的部分。

慕斯王

第一句有1次装箱,1+1+""(即2+"")调用了String.Concat方法,参数为object类型,因此需要将2(int类型)装箱。第二句是2.ToString()调用了System.Int32的ToString方法,没有装箱。因此第2句效率比第一句高. 经过实际测试,各运行10000次,第一句耗时4152Tick,第二句耗时2904Tick,测试环境windows8, vs2012 ultimate rtmrel, 控制台程序,realease编译。

呼唤远方

学习了...

开心每一天1111

第二个的效率高 第一个的主要性能消耗在了装箱操作

守着星空守着你

LZ,这就是区别,直观吧

万千封印

第二句高,第二句应该就是调用了int32的tostring()方法,第一句的话会自动装箱

慕容森

这种问题没必要追究!!
打开App,查看更多内容
随时随地看视频慕课网APP