我正在尝试优化我的代码,以便在运行时尽可能快地运行。我通过切换几个优化选项来比较VS和Intel,但我没有注意到显着的差异。但是,由于我的处理器是英特尔,它应该更快。您建议哪些优化开关可以最大限度地提高速度?
答案 0 :(得分:5)
编译器的重点略有不同。
Microsoft传统上以Windows操作系统和SQL Server等代码为目标(惊喜)。该代码包含许多整数类型代码,而不是很多繁重的循环。他们的编译器为这种应用程序生成了很好的代码。
英特尔专注于更多计算密集型应用程序,其中包含更多浮点计算和可能受益于积极循环展开的代码。
与您一样,我注意到我的代码经过良好的MS编译器调整后无法通过英特尔编译器重新编译。
答案 1 :(得分:2)
但是,由于我的处理器是英特尔,它应该更快
否 - 英特尔的CPU规格,微代码和编程手册可供任何编译器编写者使用。英特尔没有特别的优势
优化只能克服设计不良的代码。两个编译器可能都在进行相同的优化。
编辑:
自从我在HPC工作了10年,但当时英特尔和PCG编译器击败其他所有人,GCC非常好,MSVC非常糟糕。从那时起,英特尔不再是最终产品构建的默认编译器,GCC通常首先实现了最先进的整个程序优化技术,但MSFT的编译器已经超越了所有认可。一个原因是MSFT现在使用自己的编译器进行内部构建。
答案 2 :(得分:0)
很难为这个问题提供一刀切的答案。但是,如果您可以合理地测试真实场景,那么使用profile guided optimization可能有所帮助。它可以为特定的测试运行提供反馈。