【发布时间】:2020-01-20 23:21:25
【问题描述】:
我需要从标准正态分布中提取 53000000 个观察值。我当前的代码需要很长时间才能在 Julia 中运行(事实上,它已经运行了过去 20 分钟),我想知道是否有什么可以加快它的速度。这是我尝试过的:
using Distributions
d = Normal()
shock = rand(d, 1, 53000000)
当我在 REPL 中执行代码时(我在 Juno/Atom 中工作),代码会立即运行,但在我逐步使用调试器时会滞后(从标准法线绘制)。所以我认为调试器可能是这里真正的罪魁祸首。
【问题讨论】:
-
它几乎可以立即运行,您可能需要提供更多信息(硬件、版本等)
-
要提供该信息,请在
julia>提示符处键入versioninfo()并将其复制到此处。 -
或者(如果您的任务允许),您可以预先分配一个较小的块(例如,大小为 10000,或者理想情况下是一个完整的页面),并使用就地
randn!重复对其进行重新采样. -
次要注意:
rand(d, 1, N)生成大小为 1xN 的矩阵。如果你打算生成一个向量,你可以写rand(d, N)。 (我之所以提到这一点,是因为我在来自 Matlab 的人中经常看到上述模式。) -
为什么你真的需要这么大的向量?您可以在需要以可重现的方式使用它们时凭空创建随机数。
标签: performance random julia normal-distribution juno-ide