c# - AnyCpu 和 x86 之间的执行时间差异很大

标签 c# wpf benchmarking execution-time target-platform

当我使用我的一个库时,我发现了一些奇怪的事情!我有一个类库负责读取特定的文件类型。它的工作做得很好。

我在两个不同的项目(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/

相关文章:

sql - 深度嵌套子查询分解 (CTE) 性能缓慢

c# - 在 ASP.NET 中删除 session 结束时的临时文件

c# - 如何使 .NET COM 包装器通用

c# - 网络编程底层或类抽象?

c# - 结合 WPF Expander 和 GridSplitter 以及 MinHeight

wpf - 如何将 List 集合绑定(bind)到 WPF 中的 TabControl header ?

c# - 在 WPF TreeView 中的节点下添加节点

Java 2D 数组填充 - 无辜的优化导致严重的减速

c++ - 多线程基准测试问题

c# - 是否可以创建构造函数扩展方法?如何?