【发布时间】:2023-03-22 11:10:02
【问题描述】:
在过去的几年里,我一直在使用最新版本的 Delphi 10.3 为我的用户创建 32 位可执行文件和 64 位可执行文件。我注意到 64 位版本的运行速度始终比 32 位版本慢 10% 到 25%。
我的程序是一个独立的基于 VCL 的可执行文件,不使用任何外部 DLL。我的发布配置编译器选项对于 32 位和 64 位是相同的。两者都有 Optimization = true。
我原以为事情就是这样。但是今天,我将一个 32 位版本的 C++ 程序与 64 位的相同程序进行比较,我发现 64 位程序比 32 位版本快 5% 到 10%。
除此之外,我还发现了这篇文章:Integer Performance Comparison for C++, C#, Delphi,其中包含一个表格和图表,肯定显示 Delphi Win64 比 Delphi Win32 快:
所以我的问题是:
对于 64 位版本,是否有任何需要更改的 Delphi 编译器设置?
-
以下哪种类型的处理在 64 位 Delphi 中比 32 位慢?
- 内存密集型处理?
- 大量数值计算?
- 大量的字符串操作?
- 大量磁盘读/写?
- 大量数据库访问?
【问题讨论】:
-
您是否尝试过使用 Delphi 的替代品进行性能比较,例如 Free Pascal 或 RemObjects Oxygene?可能是 Delphi 没有像其他一些供应商的编译器那样优化。
-
@KenWhite 这根本不是真的。大多数 x86-64 applications run ~15% faster on average 由于更大的寄存器空间和 SSE 的使用。与 ARM64 相同。那里有无数的基准测试,只有当应用程序使用太多指针时,64 位版本才会更慢。它不像 MIPS 或 SPARC 这样的经典 RISC 架构,唯一的优势是更大的内存地址空间
-
请显示minimal reproducible example。否则你只需要分析你的程序并找出它慢的地方
-
“众所周知,Delphi 拥有出色的优化编译器。”如果那是真的。可悲的是它不是。实际上,Delphi 的编译器以生成效率低下的代码而闻名。
-
@lkessler 你的问题的答案基本上取决于你的程序做什么。因此,您的问题对于本网站来说过于宽泛。
标签: c++ performance delphi 64-bit