【发布时间】:2020-02-11 19:27:21
【问题描述】:
我有一个带有 Linux 操作系统的基于 ARM 的平台。尽管其基于 gcc 的工具链同时支持 hardfp 和 softfp,但供应商建议使用 softfp,并且该平台附带了一组标准和平台相关的库,这些库只有 softfp 版本。
我正在制作基于 OpenCV 和 tensorflow lite 的计算密集型 (NEON) AI 代码。按照供应商指南,我使用 softfp 选项构建了这些。但是,我感觉我的代码与其他有点相似的 hardfp 平台相比表现不佳。
代码性能是否取决于 softfp/hardfp 设置?我是否正确理解编译器为构建我的程序而生成的所有 .o 和 .a 文件也使用 softfp 约定,这不太有效?如果是这样,是否有任何棘手的方法可以在内部使用 hardfp 调用约定,而对外部库使用 softfp?
【问题讨论】:
-
softfp 显然会慢很多。但具有便携性优势。慢多少具体取决于您在特定平台上的软件,您必须执行该基准测试,这里没有什么可以做的。
-
softfp vs hardfp 不仅仅是参数传递,它是关于使用硬件 vs 软件,硬件(hardfp)会明显更快,多快取决于应用程序。 10倍? 100 次?快1000倍?取决于应用程序。
-
参数传递只会影响你在构建项目时你需要的一切都是一种方式或另一种方式,不能混合。这与性能是分开的。
标签: performance gcc arm tensorflow-lite eabi