我正在开展一个关于稀疏线性系统分辨率的项目(使用UMFPACK库并测试所有FEMLAB矩阵),我必须检查这个分辨率需要多少RAM(对于每个矩阵)。
我必须用不同的编程语言测试UMFPACK,所以我已经在MATLAB中编写了一些代码,我在其中找到了以下命令:
[user, sys] = memory
,特别是user.MemUsedMATLAB
。
现在我必须使用Julia编程语言编写相同的软件,但似乎很难找到一些类似的命令;我对Julia很新,我只是尝试了命令@time
,但是我无法在变量中存储已分配的内存字节数。
这非常重要,因为最后我需要绘制一个图形,其中包含每个矩阵的已分配内存字节值。
有谁知道我的问题的解决方案?如何在变量中获取代码使用的RAM? Julia中有MemUsedMATLAB
的等效命令吗?
答案 0 :(得分:1)
@time
宏显示调用相关代码时分配的内存量(总计)。这包括临时工 - 这是Matlab不会告诉你的。您可以使用@timed
宏访问值;看到每个返回值的描述有帮助:
julia> @timed rand(100000)'*rand(100000)
(25069.751546076346, 0.002270112, 1600336, 0.0, Base.GC_Diff(1600336, 2, 0, 7, 0, 0, 0, 0, 0))
help?> @timed
@timed
A macro to execute an expression, and return the value of the expression,
elapsed time, total bytes allocated, garbage collection time, and an object
with various memory allocation counters.
但这不是休息时的记忆。它是在计算表达式期间分配的内存总量。如果有很多临时工具,这可能远远高于系统的可用内存。
您还可以使用Base.summarysize
函数来估算单个对象的大小,但计算结果是近似的。