为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

芜湖不芜 2018-12-06 16:51:51
string str1 =1+1+ ""; string str2 = (1 + 1).ToString();
查看完整描述

14 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

1 没必要纠结这个

2 目测第一个高。 因为第一个可以被编译器优化(release下去看, 结果应该是不一样的),

第一个结果永远不变, 因此可以直接被编译器编译成算好的结果

而第二个, 因为调用了ToString, 编译器不敢优化。 所以应该会慢一点。

 

不要太过相信“代码跑出来的时间”, 因为有可能是没开优化, 或者被其他的因素影响, 等等。

这个我一般戏称它为:测不准原理。

查看完整回答
反对 回复 2019-01-21
?
函数式编程

TA贡献1807条经验 获得超9个赞

这里没有任何类型转换。

查看完整回答
反对 回复 2019-01-21
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

第2条效率高,第一条的话应该是先把1+1自动toString之后又加上"",

而第二题省掉了加的部分。

查看完整回答
反对 回复 2019-01-21
?
慕斯王

TA贡献1864条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-01-21
?
呼唤远方

TA贡献1856条经验 获得超11个赞

学习了...

查看完整回答
反对 回复 2019-01-21
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

第二个的效率高

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

查看完整回答
反对 回复 2019-01-21
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

LZ,这就是区别,直观吧

查看完整回答
反对 回复 2019-01-21
?
万千封印

TA贡献1891条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-01-21
?
慕容森

TA贡献1853条经验 获得超18个赞

这种问题没必要追究!!

查看完整回答
反对 回复 2019-01-21
  • 14 回答
  • 0 关注
  • 431 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信