【发布时间】:2018-09-26 18:13:23
【问题描述】:
我正在重写一些 S3TC 算法,并且在分析我正在测试的优化时,我使用的是 vs2010。在我写完代码后,决定在平台工具集 v141 上对其进行分析。将单独的解决方案和项目文件克隆为原始的克隆,并将解决方案加载到 vs2017 中。将分析项目重新定位到平台工具集 v141、Windows SDK 10,清理并重建所有内容,做了几次......
分析是由于 Release 版本的性能下降而导致的,而 Debug 版本的值与 vs2010 调试非常相似。 Release 版本的实测下降约为 11% 并保持不变。检查项目属性中的优化。一切都与vs2010完全相同。 之后,我重新定位到平台工具集 v100,离开 Windows SDK 10 并重新构建所有内容。分析结果与 vs2010 分析结果相同。回到 v141,性能下降了约 11%。这告诉我,与 v100 平台工具集相比,平台工具集 v141 的 c/c++ 编译器效率较低。
有没有人遇到过这种情况,并发现了新一代编译器出现这种行为的原因?
是否对两者的代码进行了预处理和比较,并找出 v141 缺少什么?
这是 MS 编译器团队中优秀编码人员的垮台,还是我在这里遗漏了什么?
【问题讨论】:
-
我听说 Microsoft 在其 C++ 库中添加了针对 Spectre 等推测执行漏洞的缓解措施。这些可能会影响性能。
-
您使用什么进行分析 - 是用于 VS10 exe 的 VS10 分析器和用于 VS17 exe 的 VS17 分析器还是独立的分析器
-
当然是独立的分析器,否则如何正确测量它;)它涉及大量测试> 1 百万,输出或结果平均标准。结果中的偏差以及最小和最大偏差。
标签: c visual-studio optimization compiler-optimization