【发布时间】:2017-12-26 17:50:43
【问题描述】:
简介
假设我想在 MATLAB 中初始化一个一维、长度为N 的实数数组,其中N 足够大,足以解决这个问题。我稍后会覆盖这些值,所以我主要关注声明。
我可以通过两种方式做到这一点:
案例A
arrayA = zeros(1,N);
案例 B
arrayB = zeros(N,1);
问题
使用上述任一方法的性能注意事项是什么?
- 一种方法的初始化速度是否比另一种更快?
- 一种方法使用的内存是否比另一种方法少(甚至可以忽略不计)?
- 一种方法是否允许更快的内存读/写?
- 其他注意事项??
出于这个问题的目的,我们将假设数组“足够大,可以容纳任何重要的事情”,并且在给定的程序中可能有许多这样的数组。
【问题讨论】:
-
试一试(基准测试)并告诉我们! :)
-
理论上没有区别。它们都访问相同数量的内存,但是交换了行和列。这篇文章可以作为一个灵感:stackoverflow.com/questions/36062574/why-is-reshape-so-fast/…
标签: arrays matlab performance optimization