我正在使用基于小型嵌入式PCIe的硬件,该硬件具有非常低端的处理器,基于操作和固件大小,我正在消耗其所有资源。要进行CPU优化,我可以执行哪些步骤?

我试图使用按位移动乘法(*)和除法(/)。
但是我有这样的代码

Y = X * 3;


要么

Z = X / 1000;


越来越困惑如何以CPU​​友好的方式进行这些操作。

最佳答案

1.确认瓶颈

有受CPU限制,受内存限制,受IO限制的应用程序等。实际上,您的低端处理器可能会花费大部分时间等待DRAM中的数据,进行某些IO或等待自旋锁。因此,您要做的第一件事就是确认您的真正瓶颈。

有用于此目的的工具,例如用于Linux的免费perf或付费的Intel VTune。

2.向我们展示背景

如果您发现大部分时间您的CPU花在foo()上,请向我们展示此函数,以便我们提供帮助。

3.通用建议

对于您的一般性问题,您只会得到一般性的建议,例如:


使用更积极的编译器优化,例如-O3
更改您的算法。
避免锁。
对齐数据。
避免错误共享。
使您的数据结构更紧凑。
使用预取。




抱歉,没有上下文可以建议您使用更具体的技术。

07-24 09:46
查看更多