【问题标题】:Best compiler flags for an objective C project with the opencv framekwork使用 opencv 框架的目标 C 项目的最佳编译器标志
【发布时间】:2011-12-20 14:35:10
【问题描述】:

我正在使用 opencv 框架编译和 ios 项目,所以我很想知道我的项目最好的编译器标志是什么。

该项目处理大量矩阵像素,因此我需要从编译器方面获得 SIMD 指令,以便能够尽可能高效地处理此矩阵。

我使用以下标志:-mfpu=neon、-mfloat-abi=softfp 和 -O3,

我还发现了其他标志: -mno拇指 -mfpu=特立独行 -ftree-矢量化 -DNS_BLOCK_ASSERTIONS=1

我真的不知道它是否会为我节省大量的 cpu 处理,我通过谷歌搜索,但我没有找到让我有充分理由了解最佳编译器标志的东西。

谢谢

【问题讨论】:

    标签: c++ objective-c performance neon compiler-flags


    【解决方案1】:

    我也使用与霓虹灯相同的标志。根据优化级别 O3 或任何东西,不会对霓虹内在代码进行优化。它只是优化了 ARM 代码。

    正如 Vasile 所说,通过在汇编中编写霓虹灯代码可以获得最佳性能。 最简单的方法是编写一个使用内部霓虹灯代码的程序,并使用您提到的标志对其进行编译。现在使用为代码生成的汇编代码进行进一步优化。

    可以通过并行化或利用 neon 的双指令功能进行很多优化。

    【讨论】:

      【解决方案2】:

      问题在于编译器不太擅长生成矢量化代码。因此,仅启用 NEON 并不会获得太多改进(可能是 10% ??)

      您可以做的是分析您的应用程序并使用 NEON 手写那些占用您时间的部分。如果你这样做了,为什么不将它们修补到公共 OpenCV 源代码中?

      到目前为止,OpenCV 几乎没有为 NEON 优化过的代码(对于 x86 SSE2,优化得更好)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        相关资源
        最近更新 更多