【问题标题】:C Programming Optimization and Processor ExtensionsC 编程优化和处理器扩展
【发布时间】:2015-07-20 01:39:21
【问题描述】:

我有一个 C 编程任务,其中涉及尽可能优化代码。我已经在 Internet 上对此进行了一些阅读,并发现了诸如使用 case 而不是 if、通过指针而不是值传递等内容。

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

关于我上面的问题,我发现Intel Intrinsic Guide 我认为它与处理器扩展有关。与其他 C 函数相比,使用这些函数在性能方面是否有任何优势。例如使用来自xmmintrin.h_mm_sqrt_ps 会比来自math.hsqrt 快吗?

【问题讨论】:

    标签: c performance optimization processor


    【解决方案1】:

    这个想法是拥有每个 CPU 优化的库(SSE、AVX 等),并调用类似 _may_i_use_cpu_feature() 来动态确定运行时可用的功能并为 CPU 加载“最佳”实现。

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

    无论如何,更好的算法可以获得大多数性能......

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 2018-01-04
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多