近期处理Tina上的一个客户问题,问题的大概情况是在运行客户应用过程中,频繁出现CPU占用率%100的情况,除了优化应用外,通常处理这类问题的方式是尽可能把加速单元打开,这些加速包括专用硬件加速以及CPU的通用加速,以ARM CPU为例,典型的加速方式就是开启ARM NEON加速功能。
当我试图在方案中启用NEON加速的时候,却发现了意外情况,就是MUSL LIBC的LIBC库,竟然没有使用NEON指令去实现.

由于是直接手搓汇编实现的,即便在编译的时候加上NEON支持的选项,也无法生成NEON加速的指令,但是使用NEON要比不使用的情况下,效率提升1.5倍。
可以看到,musl的libc.a实际上是用支持neon的选项编译的。

newlibc中的实现:

对比glibc中的实现:

后面就索性加入了musl的开发者社区,去社区里面问了以下,很快就有人回复,不过感觉他没有完全明白我的意思(或者我没有理解他的意思:)).

所以,基本上是确定musl没有在arm上专门做NEON加速的优化。

博主在解决客户应用CPU占用过高的问题时,发现MUSL libc库并未针对ARM的NEON硬件加速进行优化。尽管编译时启用了NEON支持,但库内部实现并未使用NEON指令,导致无法利用硬件加速提升效率。加入MUSL社区寻求解答,但未得到明确解决方案。结论是MUSL在ARM平台上未专门实施NEON加速优化。
1万+

被折叠的 条评论
为什么被折叠?



