gpt4 book ai didi

arrays - 你能在 Julia 中为字符串预分配空间吗?

转载 作者:行者123 更新时间:2023-12-04 03:48:53 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com