c - 如何使用除以1000作为CPU优化?

标签 c performance arithmetic-expressions

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

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

Y = X * 3;

Z = X / 1000;

对如何以 CPU 友好的方式执行这些操作感到困惑。

最佳答案

1。确认您的瓶颈

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

有一些工具可以实现此目的,例如适用于 Linux 的免费 perf 或付费的 Intel VTune。

2。向我们展示上下文

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

3。一般建议

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

  1. 使用更积极的编译器优化,例如 -O3
  2. 更改您的算法。
  3. 避免锁定。
  4. 调整您的数据。
  5. 避免虚假共享。
  6. 使您的数据结构更加紧凑。
  7. 使用预取。

等等等等

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

关于c - 如何使用除以1000作为CPU优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669101/

相关文章:

c++ - 当二元运算符两边的符号不同时,提升规则如何工作?

c - 反转c风格字符串

c - 删除c中链表中的元素

bash - bash/shell 数字上下文中的递归变量扩展从何而来?

math - sml 中的 rem 和 mod 函数有什么区别?

python - 哪个更快,a==2==b,或者a==2和b==2

c - C 中的字符串复制

java - 不是结构或联盟

Java:哪个更快?局部变量还是访问封装?

c - 在 O(N) 中找到 m 个最小元素的数据结构?