ama*_*ers 10 c# performance constants compiler-optimization
给出以下代码:
const int constA = 10;
const int constB = 10;
function GetX(int input) {
int x = constA * constB * input;
...
return x;
}
Run Code Online (Sandbox Code Playgroud)
.Net编译器会'替换'表达式并放置1000,所以计算不会一遍又一遍地重复吗?
在什么时候代码运行得最快:
int x = constA * constB * input;
Run Code Online (Sandbox Code Playgroud)int x = 10 * 10 * input;
Run Code Online (Sandbox Code Playgroud)int x = 100 * input;
Run Code Online (Sandbox Code Playgroud)我猜选项3将比2更快,但有时不是最可读的选项.编译器是否识别这样的模式并相应地对其进行优化?
我在LINQPad中试过这个:
const int constA = 2;
const int constB = 50;
void Main()
{
Console.WriteLine(GetX(12));
}
int GetX(int input)
{
int x = constA * constB * input;
return x;
}
Run Code Online (Sandbox Code Playgroud)
IL是:
十六进制64值(十进制100)是常量相乘的结果.mul操作是乘法input
.
所以听起来应用于常量的操作是由编译器优化的.
归档时间: |
|
查看次数: |
1956 次 |
最近记录: |