自己的程序性能大幅下降
Big performance drop on own program
我不确定这个站点 Stack Exchange 是否正确。说错了告诉我哪一个。
我有自己的程序(C#、WinForms)和两台带 CPU 的电脑:
- 英特尔酷睿 i5-2320,3200 MHz(Windows 7)
- 英特尔赛扬 G1820 2700 MHz(Windows 10)
该程序与 Access 数据库(Entity Framework 核心)结合使用。例如加载多条记录显示在table中,添加、更新、删除记录。
我的问题是性能。第一台电脑没有问题。这是日志的一部分:
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.
编译
我不明白为什么性能下降如此显着。就像有什么东西接管了整个处理器。不让我的程序工作。但在不同的时代,给予正确的工作。
我认为这与程序代码无关。毕竟第二台计算机可以充分处理我的程序。根据日志。
这个问题可能是什么原因造成的?
例如,我可以给出一个典型的数据库访问代码来理解这在很长一段时间内都不是 "heavy" 任务。
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;
}
目标计算机有杀毒软件。有时防火墙会捕获对 Microsoft 的请求。 This 问题。我不知道为什么。这是减速程序。另一方面,open 的 Chrome 有很多标签。
我不确定这个站点 Stack Exchange 是否正确。说错了告诉我哪一个。
我有自己的程序(C#、WinForms)和两台带 CPU 的电脑:
- 英特尔酷睿 i5-2320,3200 MHz(Windows 7)
- 英特尔赛扬 G1820 2700 MHz(Windows 10)
该程序与 Access 数据库(Entity Framework 核心)结合使用。例如加载多条记录显示在table中,添加、更新、删除记录。
我的问题是性能。第一台电脑没有问题。这是日志的一部分:
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.
编译我不明白为什么性能下降如此显着。就像有什么东西接管了整个处理器。不让我的程序工作。但在不同的时代,给予正确的工作。
我认为这与程序代码无关。毕竟第二台计算机可以充分处理我的程序。根据日志。
这个问题可能是什么原因造成的?
例如,我可以给出一个典型的数据库访问代码来理解这在很长一段时间内都不是 "heavy" 任务。
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;
}
目标计算机有杀毒软件。有时防火墙会捕获对 Microsoft 的请求。 This 问题。我不知道为什么。这是减速程序。另一方面,open 的 Chrome 有很多标签。