c++ - 在 AVR 中逻辑右移 2 次方的速度更快吗?

标签 c++ optimization avr bit-shift atmega

我想知道在按 2 的幂移动时执行逻辑右移是否更快

例如,是

myUnsigned >> 4

任何快于

myUnsigned >> 3

我很感激每个人的第一 react 都是告诉我,人们不应该担心像这样的小事,它正在使用正确的算法和集合来削减重要的数量级。我完全同意你的看法,但我真的想尽我所能地从嵌入式芯片(ATMega328)中挤出——我刚刚得到了一个值得“哇哦!”的性能转变。通过用移位替换除法,所以我向你保证这确实很重要。

最佳答案

让我们看一下数据表:

http://atmel.com/dyn/resources/prod_documents/8271S.pdf

据我所知,ASR(算术右移)总是移动一位,不能取移动的位数;需要一个周期来执行。因此,右移n位需要n个周期。 2 的幂与任何其他数字的行为相同。

关于c++ - 在 AVR 中逻辑右移 2 次方的速度更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726326/

相关文章:

c++ - OpenGL 无法使用 Shaders Mac 进行渲染

javascript - 用于多应用程序项目的 Grunt 和 requirejs 优化器

将 for 循环转换为 if

arduino - LUFA 编码 AT90USB162 示例

c++ - 重新创建交换链与在调整大小时使用动态状态

c++ - 无方法抽象类?

c++ - 什么时候非静态 const 数据成员比 const 静态数据成员更有用?

c - 符号扩展的必要性是什么?

mysql - 为什么我的 UPDATE ... WHERE ... ORDER BY .. LIMIT 1 语句需要这么长时间?

c - 使用 ATTiny 和 Atmel Studio 处理 32 位数字