我不确定发生了什么。我正在我的笔记本电脑上运行我的神经网络模拟,它上面有MATLAB R2013a。
代码在我的桌面上运行得很快(虽然R2012a),但在笔记本电脑上非常慢。我用性能和计时的东西来运行它,因为这看起来很不正常,这里是我花费大部分时间做某事的函数的截图:
这位于codeHints.m文件中,所以它不是我写的。有什么方法可以禁用它吗?我搜索了它,但也许我没有找到正确的东西......我找不到任何东西。我无法完成任何工作,因为它太慢了:(
会感激一些建议!
更新:我还试图在我的桌面上运行它(与笔记本电脑相同的MATLAB版本,也是8GB的RAM),我也遇到了同样的问题。我检查了资源监视器,看起来这个过程正在触发大量的内存故障(~40 /秒),即使我的RAM只有一半被使用了。
我在MATLAB中键入“memory”并获得以下信息:
最大可能阵列:11980 MB(1.256e + 10字节)*
可用于所有阵列的内存:11980 MB(1.256e + 10字节)*
MATLAB使用的内存:844 MB(8.849e + 08字节)
物理内存(RAM):8098 MB(8.491e + 09字节)
所以似乎应该有足够的空间。我将尝试整理一个示例文件。
更新#2:我在工作计算机上使用以下“内存”信息在2012a上运行了我的代码: 最大可能数组:10872 MB(1.140e + 10字节)*
可用于所有阵列的内存:10872 MB(1.140e + 10字节)*
MATLAB使用的内存:846 MB(8.874e + 08字节)
物理内存(RAM):8098 MB(8.491e + 09字节)
迭代次数超过上述次数(15000次而不是10000次)的运行完成得更快,并且没有多余的内存分配调用:
所以在我看来这是一个专门针对2013a的问题。现在我将使用2012a(因为我需要这个完成),但如果有人知道如何处理2013a以停止对codeHints的调用,我将不胜感激。
答案 0 :(得分:1)
虽然这会在第一眼看到内存问题,但似乎你的测试使内存不足是不可能的。在这种情况下,我能想到的唯一合理的解释是,计算机实际上是在尝试做两件不同的事情,因此需要更多的时间。
一些可能性:
可以通过在代码中放置一些断点同时在2台计算机上运行并验证输入完全相同来检测第一个点。 (如果你有很多变量,请考虑使用visdiff)
第二个几乎只能由过载的零引起。确保在此行停止并查看正在调用的函数。
如果这两点都无法解决问题,请尝试尽可能减少代码,直到您只有一行或几行来创建差异。如果结果差异来自这一行,请尝试在两台计算机上使用正确大小输入的zeros
函数,并使用timeit File Exchange Submission
如果您发现在两台计算机上都使用内置功能,内存充足且性能差异仍然很大,那么可能是时候联系数学支持并听取他们对此有何看法。