我不确定该网站是否正确。告诉我哪一个不对。
我有自己的程序(C#,WinForms)和两台带有CPU的计算机:
该程序与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;
}