启用-msse、-msse2和mfpmath=sse会让我的程序运行得更快吗
Will enabling -msse, -msse2 and -mfpmath=sse always make my program run faster?
我有一个C++程序,它正在做很多数学运算(主要是调用sin()、sqrt()和常规运算)。我知道,在理论上,启用-msse、-msse2和mfpmath=sse应该为GCC/G++公开更多的寄存器,这可能会使我的程序运行得更快,在实践中它会一直这样做吗?在最坏的情况下,它会让我的代码运行得更慢吗?
当担心性能时,您应该始终进行评测。
SSE指令使用不同的CPU资源,因此它们可能会导致性能下降(例如,因为这些资源不可用于超线程),但在现实生活中,这种情况应该非常罕见。
不:它不会总是让程序更快。
尽管可能,但在可悲的情况下,我真的不会期望有太大的放缓;然而,正如Ben所提到的,配置文件,配置文件。
你的运气可能会有所不同。此外,如果在将运行代码的同一类型的CPU上进行编译,则使用-march=native
通常会更好。
特别是SIMD指令,注意对齐和处理器相关性(即对缓存位置的影响)
相关文章:
- 运行程序时出现问题
- 分段错误当我试图运行程序时出错
- C++ 每次运行程序时我都会"nan"输出的问题
- 通过 g++ 运行程序时没有这样的文件或目录
- 重新运行程序和字符串流?
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 使用有限的 RAM 运行 c++ 程序
- 继续运行程序而无需任何干预,直到要求退出为止
- 如何在每次运行程序时写入文件的下一行?
- 控制台在运行C ++程序后立即关闭(无需调试)
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 远程运行程序
- 在 Heroku 上运行 C++ 程序
- 如何在Powershell中运行C++程序,就像CMD一样?
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- C++随机数生成器通常在 Visual Studio 中运行程序时在 2 次后停止生成数字
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 我收到阻止我运行程序的警告,但不确定如何解决
- C++ Visual Studio 无法完全运行程序
- 在SIGABRT c ++信号之后继续运行程序