gpt4 book ai didi

python - 是否应该在每个字符串出现时显式调用 intern ?

转载 作者:行者123 更新时间:2023-12-01 05:32:36 25 4
gpt4 key购买 nike

假设我逐行读取文件并将这些行保存到列表中:

intern('abcd')
lst = []
for line in f:
lst.append(line)

并且该文件有五个相同的行:

abcd
abcd
abcd
abcd
abcd

读取完成后,内存中'abcd'会存在五份还是只有一份?

最佳答案

将有 5 份。 intern() 调用返回字符串的一份副本,它不会神奇地使所有具有相同内容的 future 字符串被保留。

但是,我不会对文件数据使用实习。驻留字符串的最大优点是在性能关键部分,您需要尽可能快地进行字典查找。实习允许您在可以使用指针算术时跳过相等测试。

实习也会带来性能损失;每次调用 intern() 时,都会根据内部字典对字符串进行测试,以查看该字符串是否已被实习。这需要一次哈希调用和 0 次或多次相等性测试(如果字符串之前没有被驻留并且没有哈希冲突,则为 0 次;如果存在冲突,则为 1 次以上)。对字符串中的每一行调用 intern() 都会因这些操作而变慢,并且只有当您有大量重复时,我才不会这样做我想内存力的提升会非常大。

关于python - 是否应该在每个字符串出现时显式调用 intern ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19865543/

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