Performance delphixe编译器速度慢

Performance delphixe编译器速度慢,performance,delphi,compiler-construction,delphi-xe,Performance,Delphi,Compiler Construction,Delphi Xe,在我们寻求优化Delphi编译时间的过程中,我们发现不同PC之间的编译时间存在一些奇怪的差异 问题是,在某些PC上,“原始”编译时间比慢速PC快2倍,我们无法解释为什么会出现这种情况 测试设置 我们在3台配置几乎相同的电脑上测试了编译时间。这台电脑是由我们的IT部门提供并配置的,带有Windows 7 Enterprise 64位service pack 1 Delphi由我们自己安装,是Delphi XE,更新为1 硬件规格与核心i7-3770 3,4 GHz 8G Ram和256 Gb S

在我们寻求优化Delphi编译时间的过程中,我们发现不同PC之间的编译时间存在一些奇怪的差异

问题是,在某些PC上,“原始”编译时间比慢速PC快2倍,我们无法解释为什么会出现这种情况

测试设置

  • 我们在3台配置几乎相同的电脑上测试了编译时间。这台电脑是由我们的IT部门提供并配置的,带有Windows 7 Enterprise 64位service pack 1

  • Delphi由我们自己安装,是Delphi XE,更新为1

  • 硬件规格与核心i7-3770 3,4 GHz 8G Ram和256 Gb SSD磁盘几乎相同

  • 我们对所有3台PC进行了基准测试,在通用系统、磁盘和ram上的性能几乎相同

  • 我们使用dcc32.exe命令行编译执行了测试。我们在不同的项目上进行了测试,都是从公共源代码库中提取的

测试

在进行了大量测试之后,我们查看了不同的Delphi环境配置以及Windows7设置。所有测试都显示,其中2台电脑的性能相似,1台电脑的运行速度是原来的两倍

最后,我们制作了一个简单的测试文件,其中包含一个简单的类和许多增加变量的行。测试文件为32MB,在fast PC上以1.3s格式编译。在另外两台电脑上,需要>3秒

执行编译的命令:

"c:\program files (x86)\embarcadero\rad studio\8.0\bin\dcc32.exe" -$O- -$W+ -$J+ -$YD --no-config -B -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG; -U;"c:\program files (x86)\embarcadero\rad studio\8.0\lib\Win32\release" -V -VN -K00400000 -GD -NBDcp -NHHpp -NODcp ..\Test.pas
你知道为什么在几乎相同的PC上编译时会如此不同吗


我们可以做哪些测试来解决这个问题?

正如David指出的,Delphi编译通常是磁盘绑定的。最可能的解释是,您的SSD处于各种“闯入”状态。即使是完全相同的SSD在其生命周期中的性能也会有所不同。新开箱即用SSD具有极高的峰值性能,随着驱动器开始积累使用历史,峰值性能会急剧下降。特别是对于较新的系统,您将看到SSD性能将快速变化,直到驱动器“磨合”并稳定在大致稳定的状态水平

许多其他因素也会影响SSD性能,原始基准不会再现可能影响驱动器利用缓存或其他可用性能优化的能力的真实情况

如果您真的感兴趣,请阅读存储网络行业协会关于以下主题的文章:


很难说是怎么回事。我会使用Sysinternal的Procmon,比较快速和慢速PC之间的跟踪。防病毒软件有时会在每次编译时检查exe。机器是不同的。我们最初也会使用病毒扫描程序,但是我们成功地关闭了病毒扫描程序,得到了同样的结果。我认为您可能浪费了更多的时间来优化编译时间,而在等待代码编译时,您可能会浪费更多的时间:)问题似乎有点太广泛了。我只是想得到一些反馈,以便能够诊断问题,能够更近距离地提出正确的问题。(:我们在这个线程和其他论坛上尝试了一切。我们对机器进行了基准测试,以便能够找出差异所在,尽管硬件和软件几乎相同,但“有趣”问题是,现在我们有两台机器快速编译一个测试项目,只有一台慢了。第二台电脑突然转到了fast Warp。我现在结束这个问题,看看我是否能想出如何在Embarcadero获得一些支持。Thanks@ThomasDibbern你在Embarcadero上浪费时间。对于1,你使用的是一个非常旧的编译器。对于2,它们将是JU不要说差异在于硬件。我相信问题是他们对磁盘进行了基准测试,得出了几乎相同的结果。@TuncayGöncüoğlu并非所有基准测试都是相同的,尤其是SSD。小数据块性能可能不是所有测试都能捕捉到的。在任何情况下,这一点都没有意义——可能是windows update正在运行,也可能是在测试期间运行的驱动器索引…防病毒、drop box sync…所有可能的事情。如果没有系统的帮助,这是不可能的。Delphi肯定没有什么不同-这显然是系统上的硬件或其他软件的问题。