Большое падение производительности на собственной программе - PullRequest
0 голосов
/ 12 июля 2019

Я не уверен, что это правильный сайт Stack Exchange. Скажи мне, какой из них, если это не так.

У меня есть собственная программа (C #, WinForms) и два компьютера с процессорами:

  1. Intel Core i5-2320, 3200 МГц (Windows 7)
  2. Intel Celeron G1820 2700 МГц (Windows 10)

Программа работает совместно с базой данных Access (Entity Framework Core). Например, загрузите несколько записей для отображения в таблице, добавьте, обновите и удалите записи.

Моя проблема в производительности. Там нет проблем для первого компьютера. Вот часть журнала:

Load page: 00:00:01.8143480
LoadSetData(): 00:00:00.1475554
===! Load time: 00:00:02.3864354 !===
Update() contract: 00:00:00.1656815
Update() contract: 00:00:00.0436293

Второй компьютер делает странные вещи. Можно сделать так:

Load time: 00:00:17.8201432
DeleteSubject(): 00:00:25.7574691
Update() contract: 00:00:10.1656815

А может так:

Load time: 00:00:02.3210213
DeleteSubject(): 00:00:00.4818238
Update() contract: 00:00:00.1836919

Код программы одинаков во всех случаях. Разница лишь в ширине бита. Первый компьютер запускает x86 (потому что установлен Office Access x86). Второй компьютер x64. Компилировать через Visual Studio.

Я не могу понять, почему такое значительное снижение производительности. Это как что-то захватывает весь процессор. Не позволяю моей программе работать. Но в другое время даю работу правильно.

Не думаю, что это имеет какое-либо отношение к коду программы. Ведь второй компьютер может адекватно обработать мою программу. По логам.

В чем может быть причина этой проблемы?

Например, я могу дать типичный код доступа к базе данных, чтобы понять, что это не «тяжелая» задача в течение длительного времени.

internal bool DeleteContract(int id)
{
    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();

    bool result = true;

    try
    {
        using (ModelContext model = new ModelContext())
        {
            Contracts c = model.Contracts.Single(x => x.Id == id);
            model.Remove(c);
            model.SaveChanges();
        }
        Count--;
    }
    catch (Exception ex)
    {
        result = false;
        ShowMessage.Error("some text");
    }

    stopwatch.Stop();
    logger.Debug("DeleteContract(): {0}", stopwatch.Elapsed);
    return result;
}

1 Ответ

1 голос
/ 28 июля 2019

На целевом компьютере установлен антивирус.Иногда брандмауэр ловит запрос к Microsoft. Это вопрос.Я не знаю для чего.Это программа замедления.С другой стороны, откройте Chrome со многими вкладками.

...