【发布时间】:2013-09-16 10:14:55
【问题描述】:
大家好!
我的 AVR 在我的 DIY 洒水器和鱼缸自动化方面取得了不错的进展,但我遇到了一个问题,这让我很烦恼。
哪个 if 语句在 AVR 上运行得更快?(在更少的时钟周期内) 多少?
if(temp_sensor[0] < -20)
{
OCR1A--;
}
else if(tempout > tempset)
{
OCR1A--;
}
或者
if((temp_sensor[0] < -20) || (tempout > tempset))
{
OCR1A--;
}
再想一想,我的第二个问题是: 哪个占用空间少?
我的结论: 首先感谢大家的回答和cmets!
主要目标应该是编写简洁易懂的代码。
【问题讨论】:
-
我猜你的意思是||在第二个。并且在-20之后也丢失了)。
-
不要尝试过度优化。编写干净易读的 C 代码,让编译器为您进行优化。它会比你做得更好。如果你真的需要超级优化的代码,那就用 ASM 写吧。这是管理代码时钟周期消耗的唯一方法。
-
我怀疑你是否受到 CPU 的任何限制,当我猜你使用 ADC 或 OneWire 连接的温度传感器需要数千个周期才能读取时,为什么还要担心 if 语句。跨度>
标签: c optimization if-statement avr