ult*_*ian 9 arrays string performance memory-management julia
Julia文档描述了预分配内存以Array通过避免垃圾回收来提高性能.String毕竟,这可能与一个Vector有关吗?String源代码在这里.
我的用例是我正在处理大型文本转储,使用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)
Run Code Online (Sandbox Code Playgroud)
我希望磁盘I/O成为主要的瓶颈,但我有兴趣了解任何有用的东西.我欢迎任何关于加快这一进程的可能方法的建议.
Julia中的字符串是不可变的,因此预先定位的概念不起作用.
julia> a = "aaaa";
julia> pointer(a)
Ptr{UInt8} @0x0000000119628f50
julia> a = "bbbb";
julia> pointer(a)
Ptr{UInt8} @0x000000011963a030
Run Code Online (Sandbox Code Playgroud)