MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   什么时候不向量化Matlab? (https://www.labfans.com/bbs/showthread.php?t=22930)

poster 2019-12-10 16:49

什么时候不向量化Matlab?
 
我正在研究一些处理大型(但不是大型)数据集的matlab代码:10,000 784个元素向量(非稀疏),并计算有关存储在10,000x10稀疏矩阵中的信息。为了使代码正常工作,我迭代地完成了一些棘手的部分,对10k项进行循环处理以处理它们,并对稀疏矩阵中的10项进行循环处理以进行清理。

我的过程最初需要进行73次迭代(因此大约730k循环),然后运行了大约120秒。不错,但这是matlab,因此我着手对其进行矢量化处理以加快速度。

最终,我得到了一个完全矢量化的解决方案,该解决方案获得了相同的答案(所以它是正确的,或者至少与我的最初解决方案一样正确),但是运行需要274秒,几乎快了一半!

这是我第一次遇到Matlab代码,该代码的矢量化运行速度比迭代运行的速度慢。是否有任何经验法则或最佳实践来确定何时/可能发生?

我希望分享代码以获得一些反馈,但这是针对当前正在开放的学校作业,因此我现在真的不能。如果它最终成为“哇,那很奇怪,您可能做错了一些事情”之一,那么我可能会在一两周内再次进行检查,以查看我的矢量化处理是否成功。


回答:
Matlab中的向量化通常意味着分配更多的内存(制作更大的数组以避免循环,例如,用[URL="http://www.mathworks.com/support/tech-notes/1100/1109.html"]tony的技巧[/URL] )。在最新版本中,通过改进的JIT循环编译,您的向量化解决方案所需的内存分配可能意味着没有优势,但是却看不到代码,这很难说。 Matlab具有出色的逐行分析器,可以帮助您了解矢量化版本的哪些特定部分正在花费时间。



[url=https://stackoverflow.com/questions/1777425]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:01

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.