本文介绍了.NET乘法优化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
编译器是否优化任何乘法1?也就是说,考虑:
Does the compiler optimize out any multiplications by 1? That is, consider:
int a = 1;
int b = 5 * a;
将表达式5 * a优化到5?如果不是,如果a被定义为:
Will the expression 5 * a be optimized into just 5? If not, will it if a is defined as:
const int a = 1;
推荐答案
它会在编译时预先计算任何常量表达式,包括字符串连接。如果没有 const
,它将被单独使用。
It will pre-calculate any constant expressions when it compiles, including string concatenation. Without the const
it will be left alone.
IL:
.maxstack 2
.locals init ([0] int32, [1] int32)
ldc.i4.1 //load 1
stloc.0 //store in 1st local variable
ldc.i4.5 //load 5
ldloc.0 //load 1st variable
mul // 1 * 5
stloc.1 // store in 2nd local variable
b $ b
第二个示例编译为:
The second example compiles to this:
.maxstack 1
.locals init ( [0] int32 )
ldc.i4.5 //load 5
stloc.0 //store in local variable
这篇关于.NET乘法优化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!