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

C# vs C++ 32 bit vs 64 bit compiler performance

我正在写一个性能关键的程序,我在我更熟悉的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 语句组成,这些语句测试结构中包含的布尔值。也没有涉及长类型。 如果需要,我可以 post 代码,但我想也许这只是我对编译器不了解的事情。

编辑:C++ Win32 使用 /MT 编译以获得最佳性能。我试过用 /MD 编译 x64,性能只慢了大约 6 倍。 我还记得一年前我 运行 在 VS2013 中对一段类似的代码进行相同的测试时,x64 和 Win32 构建的性能与我记忆中的相同...

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

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