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

标签 arrays string performance memory-management julia

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/

相关文章:

c# - 查找数组中的最短元素

c++ - 与迭代相比,为什么我的二进制搜索如此慢?

javascript - Rhino 是否像 Node.js 那样自动优化脚本?

c# - .Net 数据结构 : ArrayList, List、HashTable、Dictionary、SortedList、SortedDictionary——速度、内存以及何时使用它们?

PHP:返回数组的第一个/最后一个 N 个元素的任何函数

c++ - 如何在C++中执行for循环直到队列为空

java - 在 Java 中将多行字符串强制转换为 List<String>

python - 在字符串中查找字母,后面没有数字......可能使用 RE?

c - 优化嵌套循环的 C 代码

arrays - HTTP GET 无休止地请求数据