Julia进程使用的内存

时间:2017-06-02 10:34:17

标签: matlab julia ram

我正在开展一个关于稀疏线性系统分辨率的项目(使用UMFPACK库并测试所有FEMLAB矩阵),我必须检查这个分辨率需要多少RAM(对于每个矩阵)。

我必须用不同的编程语言测试UMFPACK,所以我已经在MATLAB中编写了一些代码,我在其中找到了以下命令:

[user, sys] = memory,特别是user.MemUsedMATLAB

现在我必须使用Julia编程语言编写相同的软件,但似乎很难找到一些类似的命令;我对Julia很新,我只是尝试了命令@time,但是我无法在变量中存储已分配的内存字节数。 这非常重要,因为最后我需要绘制一个图形,其中包含每个矩阵的已分配内存字节值。

有谁知道我的问题的解决方案?如何在变量中获取代码使用的RAM? Julia中有MemUsedMATLAB的等效命令吗?

1 个答案:

答案 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函数来估算单个对象的大小,但计算结果是近似的。