Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 什么时候不向量化Matlab?

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

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

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

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

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


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



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



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


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