gpt4 book ai didi

performance - Rust 的 String::from ("literal") 是否复制所有字符串数据?

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

我注意到我经常需要在 Rust 中执行 String::from("mydummystring")。对 from() 的调用最终会创建字符串数据的完整副本吗?这似乎是一个主要的性能问题。

最佳答案

是的,From<&str>对于 String通过创建一个新的堆分配缓冲区并将数据从原始切片复制到其中来工作。

Seems that would be a major performance issue.

可能比您想象的要少。复制一大块字节通常非常快。您应该对代码进行基准测试以了解复制是否是瓶颈。即使复制速度很慢,大多数重要的程序也可能会进行一些字符串的复制;你不能永远不复制任何东西。

尽管如此,如果有大量不必要的复制正在进行并且这对您的设计来说是一个问题,Rust 提供了许多其他选项。 String不是 Rust 唯一的字符串类型,甚至不是最常用的字符串类型;如果不需要复制字符串,通常可以使用 &str 借用它们, 使用 Rc<str> 分享所有权,使用 Cow<str> 将拥有决定推迟到运行时,甚至使用字符串实习库,例如 string-cache .使用 Rust,值的所有权和复制在 的控制之下,事实上,这比大多数其他语言要好得多。最终,您可以选择哪种所有权对您的程序中的字符串最有意义。

引用资料

关于performance - Rust 的 String::from ("literal") 是否复制所有字符串数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65974127/

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