string str1 =1+1+ ""; string str2 = (1 + 1).ToString();
14 回答
绝地无双
TA贡献1946条经验 获得超4个赞
1 没必要纠结这个
2 目测第一个高。 因为第一个可以被编译器优化(release下去看, 结果应该是不一样的),
第一个结果永远不变, 因此可以直接被编译器编译成算好的结果
而第二个, 因为调用了ToString, 编译器不敢优化。 所以应该会慢一点。
不要太过相信“代码跑出来的时间”, 因为有可能是没开优化, 或者被其他的因素影响, 等等。
这个我一般戏称它为:测不准原理。
慕斯王
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编译。
- 14 回答
- 0 关注
- 431 浏览
添加回答
举报
0/150
提交
取消