我正在为Arduino平台上的ESP8266单片机编写一段C++代码,我正试图让我的代码尽可能高效。
为了通过I2C操作其他单片机,我需要配置他的内部寄存器,存储8位。为了设置位开/关,我使用and位掩码。
要做到这一点,一种方法是移位并应用逐位掩码& ( and )掩码,这样Set the i-th bit to zero?。
但我也可以将移位1的所有8个可能值存储在一个数组中,直接访问它们并清除移位操作。
如下所示:
const unsigned int PINS[8] = {0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};
...
pt = pt & ~(PINS[i]);
而不是:
pt = pt & ~(1 << i);
我在想,这可能会更糟,这取决于MCU的编译器在这方面的工作方式。通过索引访问数组的成本更高吗?数组值将在cpu寄存器中吗?我是不是夸大了优化?还有其他选择吗?
你能帮助我对这个问题有深刻的见解吗?
转载请注明出处:http://www.jndeho.com/article/20230526/1090002.html