Julia 文档描述了 pre-allocating memory对于 Array
通过避免垃圾收集来提高性能。这可以用 String
做吗?毕竟这是一个向量? String
源代码是 here .
我的用例是我正在处理大文本转储,使用 readuntil()
得到一个块,然后做正则表达式 match()
或 matchall()
或 replace()
.我已经用 Perl 编写了它,但想看看 Julia 是否可以更快。我已经知道我必须处理的最长字符串的长度。
fs=open(fn,"r")
while !eof(fs)
text = readuntil(fs, "</tag>")
text = match(r"pattern"s, text).match
text = replace(text, r"badpattern", "goodpattern")
text = replace(text, r"anotherbadpattern", "betterpattern")
... (dozens more replacements)
end
close(fs)
我预计磁盘 I/O 将成为主要瓶颈,但我有兴趣了解任何有帮助的信息。我欢迎任何有关加快进程的可能方法的建议。
最佳答案
Julia 中的字符串是不可变的,因此预分配的概念不起作用。
julia> a = "aaaa";
julia> pointer(a)
Ptr{UInt8} @0x0000000119628f50
julia> a = "bbbb";
julia> pointer(a)
Ptr{UInt8} @0x000000011963a030
关于arrays - 你能在 Julia 中为字符串预分配空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42891650/