Dor*_*oom 39 arrays matlab microbenchmark
我知道length(x)返回max(size(x))并numel(x)返回x的元素总数,但对于1乘n的数组哪个更好?它是否重要,或者在这种情况下它们是否可以互换?
编辑:只是为了踢:

看起来它们在性能方面是相同的,直到你获得100k元素.
Shi*_*zou 18
在那种情况下,他们返回相同的,没有区别.在性能方面,它取决于MATLAB中数组的内部工作.例如,如果有关于数组中有多少元素的元信息(无论形状如何),那么numel尽可能快,而max(size(x))似乎需要更多的工作来获得相同的东西(检索大小,然后找到那些中的最大值).我习惯numel在那种情况下使用,但表演演讲(假设)除外,我会说它们是可以互换的.
Mik*_*ail 10
正如其他人所说,它们对于一维阵列是相同的.
从代码可读性角度来看,恕我直言length应该用于一维数组.它是关于"有意编程"的,你看到代码并理解程序员在构思他的作品时的想法.所以当我看到numel我知道它用在矩阵上时.
length与numel我们团队多年来的讨论主题相比.前高级开发人员并不关心代码的可靠性,只关注正在完成的工作,并且只numel在其他不易读/格式化的代码中使用.其他人是一个matematician,length只用于数字数组是他的"真正的"数组.对于他使用的单元阵列和结构数组numel.