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)
操作,大致为Th(n)(因为某些管脚状态取决于相邻的管脚状态)digitalWrite
- 其次,它遍历数组的各个部分并具有
,但它具有最大的Th(n**2)
操作digitalWrite
Th(n**2)
- 对于小的
,我采取哪种方法都重要吗n
- 与三维阵列访问操作相比,
操作的成本有多高?(优化其中一个会增加对另一个的调用。)digitalWrite
- 如果不了解您的具体功能,则无法合理回答此问题。甚至不清楚这是否重要。一般来说,对于性能问题,正确的方法是实施两种方法并进行度量。特别是对于小n,你不能从理论中得出这样的结论
我的建议是采用更易于实现和理解的算法。一旦成功,如果性能足够,您可以尝试。如果可以的话。问题解决了。否则,您可以开始调整和优化
如果digitalWrite性能是一个问题,您可以始终退回到直接端口操作。但正如我已经说过的:首先让它开始工作
如果数组遍历是一个问题,您可以始终将数组映射到低维数组中,并调整遍历函数。这通常也会提高性能。@PeterMortenson这可能是不正确的英国英语,但肯定是正确的印度英语。