1 没必要纠结这个
2 目测第一个高。 因为第一个可以被编译器优化(release下去看, 结果应该是不一样的),
第一个结果永远不变, 因此可以直接被编译器编译成算好的结果
而第二个, 因为调用了ToString, 编译器不敢优化。 所以应该会慢一点。
不要太过相信“代码跑出来的时间”, 因为有可能是没开优化, 或者被其他的因素影响, 等等。
这个我一般戏称它为:测不准原理。
感觉第2条效率高,比较符合c#的类型转换
这里没有任何类型转换。
第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编译。
学习了...
第二个的效率高
第一个的主要性能消耗在了装箱操作
LZ,这就是区别,直观吧
第二句高,第二句应该就是调用了int32的tostring()方法,第一句的话会自动装箱
因为第一句是有拼接字符串的过程,而第二句则是直接转换字符串,少了拼接的过程自然速度快了,拼接字符串需要重新申请内存创建新字符串,这才是影响效率的地方,和装箱拆箱有毛个关系。
当然是 第二种写法高。
第一种 看着就蛋疼,既能还弄了一个空字符串,int类型还要装箱成object,再和空字符串进行连接。
第2条效率高
第二种效率高
第一种1+1要装箱后再与“”连接;
第二种直接调用int类型重载的ToString方法,无需装箱
这种问题没必要追究!!