gpt4 book ai didi

c - avr if 语句优化速度或大小

转载 作者:行者123 更新时间:2023-12-03 17:10:20 25 4
gpt4 key购买 nike

大家好!

我的 DIY 洒水器和鱼缸自动化的 AVR 取得了很好的进展,但我遇到了一个问题,这让我很烦恼。

哪个 if 语句在 AVR 上运行得更快?(在更少的时钟周期内)多少?

if(temp_sensor[0] < -20)
{
OCR1A--;
}
else if(tempout > tempset)
{
OCR1A--;
}

或者

if((temp_sensor[0] < -20) || (tempout > tempset))
{
OCR1A--;
}

再想一想,我的第二个问题是:哪个占用的空间更少?

我的结论:首先感谢大家的回答和评论!

主要目标应该是编写简洁、易于理解的代码。

最佳答案

您可以尝试一种(看似)无跳跃的方法:

const int8_t delta = temp_sensor < -20 || tempout > tempset;
OCR1A -= delta;

这有时可以提供更短的代码。当然它非常依赖于 CPU,不确定 AVR 有多喜欢这样的代码。它也很可能为 || 运算符的短路生成跳转。编译器也完全有可能自行优化跳转。

关于c - avr if 语句优化速度或大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com