Подтвердить что ты не робот

Ошибка Visual Studio и MSSE в сборе времени компиляции антивируса

Моя копия 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;
    }
}

Но если я заменил double на int, он немедленно скомпилируется. Как это можно объяснить...?

4b9b3361

Ответ 1

Я повторяю, 27 секунд на моей машине. Злоумышленник - MsMpEng.exe, он так долго сжигает 100% ядро. Легко увидеть вкладку "Диспетчер задач".

Это служба защитника Windows, которая фактически выполняет сканирование вредоносных программ. Отключение его путем отключения опции "Включить постоянную защиту" мгновенно фиксирует задержку. Таким образом, добавление пути, в котором я храню проекты, в поле "Исключенные файлы", возможно, ваш предпочтительный подход.

Мне бы не хотелось угадывать основную причину, но я должен предположить, что ваш исходный код запускает правило вредоносных программ. Не отличное объяснение, я не вижу задержки, когда я нацелен на .NET-версию < 4.0. Хорошо, я сдаюсь:)