gpt4 book ai didi

c - 硬件启发循环。废话?

转载 作者:太空狗 更新时间:2023-10-29 14:50:02 25 4
gpt4 key购买 nike

有一天,我在 Verilog 中学到了一个很酷的技巧。当你需要重复做某事时。您可以使用移位寄存器来计算递增的次数。只需将 1 从 LSB 移到 MSB,当它到达 MSB 时就完成了。

在 C 中它会是这样的:

for(j=0b1; !(j & (1<<16)); j=j<<1)
{
/*do a thing 16 times*/
}

我知道由于位宽,它的用途有限,但它不涉及任何加法,所以速度很快。所以我的问题是:这个有什么用吗?在 C 或任何其他高级语言中使用是否值得?

也许在资源有限的嵌入式系统中。

谢谢

最佳答案

这是非常值得的。它使代码变得不那么清晰和难以阅读,并且性能差异可以忽略不计。

您的编译器可以比您更好地进行这些类型的优化。出于性能原因,甚至可能会展开像这样的短循环。但是,如果您像这样编写循环,编译器可能无法轻松解决,因此您甚至可能会减慢程序速度。

这实际上是一个微优化的例子,几乎肯定不会对程序的运行时间产生明显的影响。

关于c - 硬件启发循环。废话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760366/

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