Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 64位Delphi exe与32位Delphi exe的执行速度_C++_Performance_Delphi_64 Bit - Fatal编程技术网

C++ 64位Delphi exe与32位Delphi exe的执行速度

C++ 64位Delphi exe与32位Delphi exe的执行速度,c++,performance,delphi,64-bit,C++,Performance,Delphi,64 Bit,在过去几年中,我一直在使用Delphi的最新版本10.3为我的用户创建32位可执行文件和64位可执行文件。我注意到64位版本的运行速度始终比32位版本慢10%到25% 我的程序是一个独立的基于VCL的可执行文件,不使用任何外部DLL。我的版本配置编译器选项对于32位和64位是相同的。两者都有优化=真 我原以为事情就是这样的。但今天,我把一个32位版本的C++程序与64位的同一程序进行比较,发现64位程序比32位版本快5%到10%。 除此之外,我还发现了这篇文章:其中包括一个表和图表,明确显示De

在过去几年中,我一直在使用Delphi的最新版本10.3为我的用户创建32位可执行文件和64位可执行文件。我注意到64位版本的运行速度始终比32位版本慢10%到25%

我的程序是一个独立的基于VCL的可执行文件,不使用任何外部DLL。我的版本配置编译器选项对于32位和64位是相同的。两者都有优化=真

我原以为事情就是这样的。但今天,我把一个32位版本的C++程序与64位的同一程序进行比较,发现64位程序比32位版本快5%到10%。 除此之外,我还发现了这篇文章:其中包括一个表和图表,明确显示Delphi Win64比Delphi Win32快:

因此,我的问题是:

  • 对于64位版本,是否有需要更改的Delphi编译器设置

  • 以下哪种类型的处理在64位Delphi中比32位Delphi慢

    • 内存密集型处理
    • 广泛的数值计算
    • 大量的字符串操作
    • 大量磁盘读/写
    • 大量的数据库访问

  • 这是在IDE下吗?我注意到在IDE下运行64位与32位的速度明显减慢,运行一个简单的进程大约需要5-10秒。然而,当我在IDE之外运行时,情况并非如此。所以我倾向于用32位进行调试

    在64位IDE之外运行同样的简单进程似乎比32位版本快一些

    作为后续编辑,以澄清我的流程:


    我的过程是将XML文件加载到clientdataset中,然后通过调试中编译的32或64版本读取/写入Firebird本地64位服务器。此外,使用CData的AWS DynamoDB访问在IDE下以64位编译要比32位编译慢得多,但是64位应用程序中的AWS访问要比IDE外的32位快得多。仔细想想。

    您是否尝试过使用Delphi的替代方案进行性能比较,例如或重新对象?可能是Delphi没有像其他供应商的编译器那样优化。@KenWhite,这根本不是真的。大多数是由于较大的寄存器空间和SSE的使用。与ARM64相同。有无数的基准测试,只有当应用程序使用太多的指针时,64位版本才会变慢。它不像经典的RISC体系结构,如MIPS或SPARC,其唯一的优势是更大的内存地址空间请显示一个。否则,您只需分析您的程序并找出它的速度慢的地方“Delphi有一个优秀的优化编译器”,如果这是真的话。遗憾的是,事实并非如此。Delphi的编译器实际上以产生效率相当低的代码而闻名。@lkessler您的问题的答案基本上取决于您的程序的功能。因此,你的问题对于这个网站来说太广泛了。这是一个有趣的想法。我对此进行了测试,结果似乎并不取决于它是否在IDE中,而是取决于它是使用Debug还是Release构建的。我使用Build with Debug的一个测试对于32位需要3.10秒,对于64位需要3.57秒。在版本中的相同测试32位需要3.45秒,64位需要3.49秒。即使如此,我的64位释放时间仍然不比我的32位释放时间快,而且应该明显快。为什么调试32位的速度比其他的都快,我也很奇怪。(注意:我做了几次运行并取平均值。一次配置的时间变化不超过0.1秒)