gpt4 book ai didi

c# - 我的编译器会忽略无用的代码吗?

转载 作者:IT王子 更新时间:2023-10-29 03:57:29 24 4
gpt4 key购买 nike

我已经通过网络回答了几个关于这个主题的问题,但我没有找到我的问题的任何答案,或者是 for another language或者它没有 answer totally (死代码不是无用代码)所以这是我的问题:

编译器是否忽略(显式或非显式)无用代码?

例如,在这段代码中:

double[] TestRunTime = SomeFunctionThatReturnDoubles;
// A bit of code skipped
int i = 0;
for (int j = 0; j < TestRunTime.Length; j++)
{

}
double prevSpec_OilCons = 0;

for循环会被移除吗?

我使用


背景是我维护了很多代码(不是我写的),我想知道无用代码是否应该成为目标,或者我是否可以让编译器处理这些代码.

最佳答案

嗯,您的变量 iprevSpec_OilCons,如果没有在任何地方使用,将被优化掉,但不会优化您的循环。

因此,如果您的代码如下所示:

static void Main(string[] args)
{
int[] TestRunTime = { 1, 2, 3 };
int i = 0;
for (int j = 0; j < TestRunTime.Length; j++)
{

}
double prevSpec_OilCons = 0;
Console.WriteLine("Code end");
}

ILSpy它将是:

private static void Main(string[] args)
{
int[] TestRunTime = new int[]
{
1,
2,
3
};
for (int i = 0; i < TestRunTime.Length; i++)
{
}
Console.WriteLine("Code end");
}

由于循环有几个语句,比如比较和递增,它可以用于实现有点较短的延迟/等待周期。 (虽然不是这样做的好习惯)

考虑下面的循环,它是一个空循环,但是执行起来会花费很多时间。

for (long j = 0; j < long.MaxValue; j++)
{

}

你代码中的循环,不是死代码,就死代码而言,下面是死代码,会被优化掉。

if (false)
{
Console.Write("Shouldn't be here");
}

循环,甚至不会被 .NET 抖动消除。基于此answer

关于c# - 我的编译器会忽略无用的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com