我有一项 C 编程作业,其中涉及尽可能优化代码。我已经在 Internet 上阅读了一些关于此的内容,发现诸如在 if
上使用 case
,通过指针而不是值传递等。
我想问的是,为什么了解可用的处理器扩展可以帮助我优化代码?我知道机器上可以使用 SSE 和 AVX,但这对我作为程序员究竟意味着什么?
关于我的上述问题,我找到了 Intel Intrinsic Guide我认为这与处理器扩展有关。与其他 C 函数相比,使用这些函数在性能方面有什么优势吗?例如使用 xmmintrin.h
中的 _mm_sqrt_ps
会比 math.h
中的 sqrt
更快吗?
最佳答案
想法是针对每个 CPU 优化库(SSE、AVX 等),并调用类似 _may_i_use_cpu_feature() 的方法来动态确定运行时可用的功能并为 CPU 加载“最佳”实现。
对于可移植代码,您希望使用 sqrt() - 一些运行时库已经优化了足够好的实现。如果您想在特定平台上完全控制和最大化性能,并且不关心可移植性,您可以编写手工优化的程序集(或使用内部函数)。
大多数性能都是通过更好的算法获得的...
关于C 编程优化和处理器扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30135677/