C 编程优化和处理器扩展

标签 c performance optimization processor

我有一项 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/

相关文章:

c - 指针和结构

c - fwrite 的性能和写入大小

javascript - 避免 jquery 函数的重复代码

java - 我应该依靠 Android 来丢弃离屏绘制吗?

c++ - 优化 switch 结构——如何避免添加 if 子句

c - printf ("%d %d %d\n",++a,a++,a) 输出

将双指针转换为单指针,反之亦然

c - 我怎样才能使 C 可以将字母与单词分开

performance - Scala 中的模式匹配是如何在字节码级别实现的?

c++ - 实现基于表查找的三角函数