使用Julia将数据写入csv文件的最有效方法

RM-*_*RM- 7 julia

我想用Julia语言编写大量数据.生成数据,然后将其存储在列表中.伪代码是:

f = open("test.csv", "w")

for i = 1:3
    position = [j for j = i:(i + 10) ]
    string_position = string(position)
    n = length(string_position)
    write(f, string_position[2:(n - 1)]*"\n")
end

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

但是,在每次迭代中获取字符串的长度然后删除字符串的第一个和最后一个元素似乎效率低下.

有更快的方法吗?

Jef*_*son 12

一个简单的优化是使用

write(f, string_position[2:(n - 1)], "\n")
Run Code Online (Sandbox Code Playgroud)

而不是*.这会连续写入两个对象,而不是先连接它们然后再写入结果.

使用a也可能更快SubString,它在没有复制的情况下引用另一个字符串的一部分.

通常,避免创建中间字符串也可能更快.而不是先创建一个字符串然后再编写它,写下单个项目.例如

for item in position
    print(f, item, ",")
end
print(f, "\n")
Run Code Online (Sandbox Code Playgroud)

我应该补充一点writecsv,标准库中有一个函数可以帮到你.