多维数组-Arduino控制函数的算法选择



我有一个函数必须做两件事:

  • 遍历n*n*n数组
  • 根据阵列的状态更新引脚

此功能将重复运行。

我有两种算法来执行该功能:

  • 首先,它遍历整个阵列,具有复杂度Th(n**3),但具有最小的digitalWrite运算,大致为Th(n)(因为某些引脚状态取决于相邻的引脚状态)。

  • 其次,它遍历数组的部分并具有Th(n**2),但它具有最大的digitalWrite操作Th(n**2)

我的问题:

  • 对于小型n,我采取哪种方法有关系吗?

  • 与三维阵列访问操作相比,digitalWrite操作的成本有多高?(由于优化了其中一个,导致对另一个的呼叫增加。)

如果不了解您的特定函数,这是不合理的。甚至还不清楚这是否重要。一般来说,对于性能问题,正确的方法是同时实施和测量。特别是对于小n,你不能从理论中得到这样的东西。

我的建议是选择更容易实现和理解的算法。一旦它起作用,您可以尝试性能是否足够。如果它是好的。问题解决了。否则,您可以开始调整和优化。

如果digitalWrite性能是一个问题,您总是可以求助于直接端口操作。但正如我已经说过的:首先让它发挥作用。

如果数组遍历是一个问题,您可以始终将数组映射到较低维度的数组中,并调整遍历函数。通常这也会导致性能的提高。

相关内容

  • 没有找到相关文章

最新更新