如果没有解释,我不确定我的头衔是否足够。
我的环境是使用clang-10编译器的Ubuntu 20.04.1。
我的开发系统是一个老化的英特尔®酷睿™i7-3740QM处理器@2.70 CPU×8
我的生产系统是Intel i7-8700 CPU @3.2 CPU x 12
我有一个应用程序,我在其中做了一些优化,与未优化的代码相比,我在开发系统上的性能略有提高。
但是,当我将二进制文件传输到生产系统时,未优化的版本比优化的版本快20%。(两个二进制文件都已安装)
我找到了在主循环中不再提供任何有用功能的死代码,并在不损失应用程序功能的情况下删除了这些代码。
此循环是CPU仿真器的密集型循环(因此性能分析显示了广泛的利用率)。
因此,总而言之,删除此代码可以使应用程序在开发系统上的执行速度加快2%,但在生产系统上的速度降低20%。由于应用程序没有I/O,并且受计算和内存的限制,我的期望是代码在我使用的任何系统上都应该快2%。
我不能解释这种行为,也不知道我能做些什么来确定可能的原因。
我正在寻找的是一些关于如何开始识别生产系统上的性能回归的指导。
发布于 2020-12-15 12:42:42
无需进一步了解您的应用程序或您所做的任何优化:查看各自GPU的数据表,i7-3740QM在集成GPU时钟速度方面似乎超过了i7-8700。您的优化是否会使用任何GPU特定指令?
https://stackoverflow.com/questions/65192890
复制相似问题