Ale*_*kiy 28 .net c# debugging visual-studio visual-studio-2013
我的VS2013 Ultimate副本将此代码编译60秒以上:
class Program
{
static void Main(string[] args)
{
double dichotomy = Dichotomy(
d =>
{
try
{
int size = (int) d;
byte[] b = new byte[size];
return -b.Length;
}
catch (Exception)
{
return 0;
}
},
0,
int.MaxValue,
1);
Console.WriteLine(dichotomy);
Console.ReadKey();
}
private static double Dichotomy(
Func<double, double> func,
double a,
double b,
double epsilon)
{
double delta = epsilon / 10;
while (b - a >= epsilon)
{
double middle = (a + b) / 2;
double lambda = middle - delta, mu = middle + delta;
if (func(lambda) < func(mu))
b = mu;
else
a = lambda;
}
return (a + b) / 2;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我取代double用int,它会立即编译.怎么能解释......?
Han*_*ant 34
我在我的机器上重复了27秒.恶魔是MsMpEng.exe,它长达100%的核心.在任务管理器的"进程"选项卡中很容易看到.
这是Windows Defender服务,实际执行恶意软件扫描的服务.通过取消"打开实时保护"选项来禁用它可以立即修复延迟.那么将我存储项目的路径添加到"Excluded files locations"框中,可能是您首选的方法.
我不得不猜测潜在的原因,但不得不假设您的源代码触发了恶意软件规则.这不是一个很好的解释,当我将.NET版本<4.0时,我没有看到延迟.好的,我放弃了:)