c# vs c++ 32位vs 64位编译器性能

本文关键字:vs 编译器 性能 64位 32位 c++ | 更新日期: 2023-09-27 18:01:37

我正在写一个性能关键型程序,在我更熟悉的c#和Visual c++之间犹豫不决。我已经针对我需要使用的操作类型运行了几个基准测试,结果让我感到困惑:(这些测试的参考是c++ Win32 build)

通过引用

c# 32:慢50%;c# 64:慢4%

通过值

c# 32:慢21%;c# 64:快1%

在Visual c++中构建x64比使用相同的编译器选项构建Win32慢20-30。

我对64位c#编译器与32位编译器相比的性能感到惊讶。为什么在Visual c++中不会发生同样的事情?64位编译器没有针对64位进行优化吗?

在基准测试中,我传递了一个对象,它有几个砖结构体作为属性。基准测试由一系列50条叠置if语句组成,这些语句用于测试结构中包含的布尔值。也不涉及长类型。我可以张贴代码,如果需要的话,但我想也许这只是一些我不知道的编译器。

Edit: c++ Win32使用/MT编译以获得最佳性能。我试过用/MD编译x64,性能只慢了大约6倍。

c# vs c++ 32位vs 64位编译器性能

我还记得,当我在一年前的VS2013中对类似的代码段运行相同的测试时,x64和Win32构建的执行与我记得的相同…

解决了,我实际上犯了一个愚蠢的错误,认为bool在c++中默认初始化为false,因为它是c#…

在c++中,32位应用程序现在与64位应用程序具有相同的性能,尽管两者目前都比c#差得多;我的代码可能有问题!