小编mel*_*ale的帖子

Julia:即时快速写入文件

我正在编写一个求解器,它需要在每个时间步写入几个数字。时间步长必须很小,因此我需要经常写输出..

这张图显示了代码分析。如您所见,突出显示的 IO 部分占用了执行时间的显着部分。

IO 是这样完成的

println(out_file, t, " ", v.P[1], " ", v.P[end])
Run Code Online (Sandbox Code Playgroud)

我想P在数据结构中保存向量的第一个和最后一个元素v以及t.

从分析看来,大部分计算时间都由string.jl函数(不是我定义的)占用。

这让我想知道是否有更有效的方法来迭代地将输出写入文件。

有什么建议吗?

谢谢

附加信息

输出文件在执行开始时打开一次,并保持打开状态直到结束。我无法报告整个代码,因为它很长,但它就像

out_file = open("file.out", "w")

delta_t = computeDeltaT()
t = 0
while t<T
  P = computeP()

  println(out_file, t, " ", P[1], " ", P[end])

  delta_t = computeDeltaT()
  t += delta_t
end

close(out_file)
Run Code Online (Sandbox Code Playgroud)

我需要迭代编写,因为解决方案会及时发展,我不知道 delta_t 会如何变化。所以我不能预先分配 P。另外,这将是一个巨大的矩阵,比如百万乘以 5。

编辑

@isebarn 每 100 步打印一次确实减少了执行时间。此外,我将尝试添加第二个工作人员来处理 IO,这样我就不会丢失数据。

io performance julia

5
推荐指数
1
解决办法
1355
查看次数

标签 统计

io ×1

julia ×1

performance ×1