C 编程优化和处理器扩展

C Programming Optimization and Processor Extensions

我有一项 C 编程作业,其中涉及尽可能优化代码。我已经在 Internet 上阅读了一些关于此的内容,发现了诸如使用 case 而不是 if、通过指针而不是值传递等内容。

我想问的是,为什么了解可用的处理器扩展可以帮助我优化代码?我知道机器上可以使用 SSE 和 AVX,但这对我这个程序员来说到底意味着什么?

关于我的上述问题,我发现 Intel Intrinsic Guide 我认为它与处理器扩展有关。与其他 C 函数相比,使用这些函数在性能方面有什么优势吗?例如使用 xmmintrin.h 中的 _mm_sqrt_ps 会比 math.h 中的 sqrt 更快吗?

想法是每个 CPU 优化库(SSE、AVX 等),并调用 _may_i_use_cpu_feature() 之类的东西来动态确定运行时可用的功能并加载 [= CPU.

的 16=] 实施

对于您想要使用 sqrt() 的可移植代码 - 一些运行时库已经优化了足够好的实现。如果你想在特定平台上完全控制和最大化性能,而不关心可移植性,你可以编写手工优化的程序集(或使用内部函数)。

大多数性能都是通过更好的算法获得的...