频道栏目
首页 > 资讯 > C# > 正文

A+=B和A=A+B真的有区别吗?

10-07-11        来源:[db:作者]  
收藏   我要投稿

今天看到一篇文章,是关于在.NET中如何提升程序性能的,里面有这样一条:

建议使用+=、-= 等简化操作符
例如原有表达式 A=A+B
改为A+=B
这样不仅减少了敲入代码的数量,而且由于变量A只出现一次,在运行时也提高了系统的性能。

确实这样的操作能减少输入,但是对于是否真能提高性能,以及以什么方式来提高性能(是优化了代码还是节省了空间等),确实不太知道,带着好奇心,自己动手试试了。首先写了两个测试方法:

static void test1()

{
string A = "string A";
string B = "string B";
A
+= B;
}

static void test2()
{
string A = "string A";
string B = "string B";
A
= A + B;
}

编译后用ildasm查看两者的IL,可以看出,两个方法的IL是一致的:

.maxstack 2
.locals init ([0] string A,
[
1] string B)
IL_0000: nop
IL_0001: ldstr "string A"
IL_0006: stloc.0
IL_0007: ldstr "string B"
IL_000c: stloc.1
IL_000d: ldloc.0
IL_000e: ldloc.1
IL_000f: call string [mscorlib]System.String::Concat(string,
string)
IL_0014: stloc.0
IL_0015: ret

既然IL都是完全一样的,想必用reflector反编译后的代码也是一样的喽。

这里分别按优化级别来查看:

//优化级别为NONE

private static void test1()//或者test2
{
string A;
string B;
A
= "string A";
B
= "string B";
A
= A + B;
return;
}
//优化级别为.NET 3.5private static void test1()()//或者test2
相关TAG标签
上一篇:C#操作Word完全方法
下一篇:多线程同步问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站