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

C# AnyCpu和x86之间的执行时间差异很大,c#,wpf,benchmarking,execution-time,target-platform,C#,Wpf,Benchmarking,Execution Time,Target Platform,当我使用我的一个图书馆时,我发现了一些奇怪的东西!我有一个类库,负责读取特定的文件类型。而且它的工作做得很好 我在两个不同的项目(WPF和Console)中使用了类库项目中一个类的Read方法 我的发现:使用类库在WPF应用程序中读取40MB文件需要17分钟。但是使用控制台应用程序读取同一文件需要1分钟 下面是我在两个不同项目中使用的相同代码 DateTime t1 = DateTime.Now; var geometris = MyLi

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

我在两个不同的项目(WPF和Console)中使用了类库项目中一个类的
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。

如果用于测量执行时间,效果会更好。您是在项目的发布模式还是调试模式下构建的?您的
我尝试的部分中有错误。您是否将WPF应用程序更改为x86平台格式?@Habib实际上我使用了秒表,但在这里我使用了
DateTime
,因为它需要更少的代码行。我正在调试中构建mode@HosseinNarimaniRad,在发布模式下构建,然后查看是否获得difference@Habib我去查一下……谢谢。WPF和控制台应用程序(当两者都处于x86模式时)之间有2分钟的差异吗?@Hossein Narimani Rad,WPF应用程序比控制台应用程序消耗更多的内存。但这可能还有另一个原因。你需要在另一台内存更大的电脑上测试你的应用程序。@Hossein Narimani Rad,你也可以尝试在不调试的情况下运行你的程序。(使用调试器执行可能会导致非常不同的性能)