空数组相乘生成零矩阵是否更快?版本差异测试结果相悖求解析
空数组相乘构造零矩阵的性能变化问题
我在MATLAB Answers上看到一篇2013年的帖子,作者通过实例说明:用两个空数组相乘得到的零矩阵,比直接调用zeros()构造零矩阵的速度更快。
但我在自己的环境中测试得到了相反的结果——直接生成零矩阵的速度明显更快。我的测试环境为:I7-6700处理器、8G内存、Win10系统、MATLAB 2020a版本。
我疑惑的是,为什么2013年时空数组相乘的方式会更快?该帖子的官方解答提到“doesn't allocate memory (R2012a, 64bit, Win7)”,这是不是意味着当时MATLAB生成的是伪零矩阵(不实际分配内存的虚拟矩阵),因此速度更快?
测试代码与结果
直接调用zeros()的测试
f=@() zeros(1000) timeit(f) % 输出: % f = % 包含以下值的 function_handle: % @()zeros(1000) % ans =1.80924e-05
空数组相乘的测试
g=@() zeros(1000,0)*zeros(0,1000) timeit(g) % 输出: % g = % 包含以下值的 function_handle: % @()zeros(1000,0)*zeros(0,1000) % ans =0.0021746854
内容的提问来源于stack exchange,提问作者bokabokaboka
相关产品推荐
相关产品推荐

