当我使用我的一个库时,我发现了一些奇怪的事情!我有一个类库负责读取特定的文件类型。它的工作做得很好。
我在两个不同的项目(WPF 和控制台)中使用了该类库项目中的类的 Read
方法。
我的发现:使用类库在 WPF 应用程序
中读取 40MB 文件需要17 分钟。但使用控制台应用程序
读取同一文件需要1分钟。
这是我在两个不同项目中使用的相同代码。
DateTime t1 = DateTime.Now;
var geometris = MyLibrary.Read(fileName);
TimeSpan dt1 = DateTime.Now - t1; //dt1: 17min for WPF
//dt1: 1min for Console
我尝试过的内容:我发现控制台应用程序
的平台目标是x86,而WPF应用程序
的目标平台是AnyCpu 。所以我将WPF
的目标平台更改为x86并再次运行它。这次执行时间为3分钟(快了14分钟)
问题:有人知道改变目标平台如何会产生这样的影响吗?但我仍然不知道为什么 WPF 应用程序。当使用我的库中的相同输入调用相同方法时,比控制台慢 2 分钟吗?
最佳答案
在我的实践中,x86 和 x64 性能之间没有太大差异。在您的情况下,原因可能是不同的 RAM 使用情况;在 x64 模式下,所有对象引用占用两倍的 RAM。
关于c# - AnyCpu 和 x86 之间的执行时间差异很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471169/