自己程序的性能大幅下降

时间:2019-07-11 22:20:01

标签: windows-7 windows-10 cpu performance c#

我不确定该网站是否正确。告诉我哪一个不对。

我有自己的程序(C#,WinForms)和两台带有CPU的计算机:

  1. Intel Core i5-2320,3200 MHz(Windows 7)
  2. 英特尔Celeron G1820 2700 MHz(Windows 10)

该程序与Access数据库(实体框架核心)结合使用。例如,加载许多记录以显示在表中,添加,更新和删除记录。

我的问题是性能。第一台计算机没有问题。这是日志的一部分:

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 个答案:

答案 0 :(得分:1)

目标计算机具有防病毒功能。有时防火墙会捕获对Microsoft的请求。 This个问题。我什么都不知道这是放慢程序。另一方面,打开带有许多标签的Chrome。