0

对于我的项目,我需要循环遍历一组值。在编译时选择元素和值的数量。目前我使用 mod 以各种不同的方式循环这些值(即不一定是简单的 i++)。

但是,我查看了 mod() 的成本,似乎它在包括 atmega Arduinos 在内的大多数架构中都是一个昂贵的功能,而且我的应用程序对时间敏感。

我提出了两种可能的解决方案,但都有缺陷。

  • 溢出索引计数器,利用无符号溢出为零。这具有非常快的优点。缺点:我需要与数组元素一样多的数组元素,唯一字节 - 至少 256 个。此外,代码很难重新阅读,因为大多数人不会假设我故意溢出。

  • 每当索引等于或超过它时删除 size_of_array 的 if 语句。优点是 size_of_array 可以。缺点:if 语句较慢(有多慢?)。

在这两种情况下,都不会遇到 mod 正确处理的边缘情况(即取非常大的模数)。

这两种解决方案有没有我没有想到的陷阱?有更好的解决方案吗?

4

0 回答 0