Multidimensional array Arduino控制函数的算法选择

Multidimensional array Arduino控制函数的算法选择,multidimensional-array,arduino,complexity-theory,Multidimensional Array,Arduino,Complexity Theory,我有一个函数必须做两件事: 遍历n*n*n数组 根据阵列的状态更新管脚 此功能将重复运行 我有两种算法来执行函数的工作: 首先,它遍历整个数组并具有复杂性Th(n**3),但它具有最小的digitalWrite操作,大致为Th(n)(因为某些管脚状态取决于相邻的管脚状态) 其次,它遍历数组的各个部分并具有Th(n**2),但它具有最大的digitalWrite操作Th(n**2) 我的问题是: 对于小的n,我采取哪种方法都重要吗 与三维阵列访问操作相比,digitalWrite操作的成

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

  • 遍历
    n*n*n
    数组
  • 根据阵列的状态更新管脚
此功能将重复运行

我有两种算法来执行函数的工作:

  • 首先,它遍历整个数组并具有复杂性
    Th(n**3)
    ,但它具有最小的
    digitalWrite
    操作,大致为Th(n)(因为某些管脚状态取决于相邻的管脚状态)

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

我的问题是:

  • 对于小的
    n
    ,我采取哪种方法都重要吗

  • 与三维阵列访问操作相比,
    digitalWrite
    操作的成本有多高?(优化其中一个会增加对另一个的调用。)


    • 如果不了解您的具体功能,则无法合理回答此问题。甚至不清楚这是否重要。一般来说,对于性能问题,正确的方法是实施两种方法并进行度量。特别是对于小n,你不能从理论中得出这样的结论

      我的建议是采用更易于实现和理解的算法。一旦成功,如果性能足够,您可以尝试。如果可以的话。问题解决了。否则,您可以开始调整和优化

      如果digitalWrite性能是一个问题,您可以始终退回到直接端口操作。但正如我已经说过的:首先让它开始工作


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

      @PeterMortenson这可能是不正确的英国英语,但肯定是正确的印度英语。