为比特串联,为什么列表比字符数组更快

为比特串联,为什么列表比字符数组更快,第1张

概述在下面链接的文章中,作者比较了python中不同字符串连接方法的效率:http://www.skymind.com/~ocrow/python_string/我不明白的一件事是,为什么方法3(可变字符阵列)导致比方法4(加入字符串列表)明显更慢的性能它们都是可变的,我认为它们应具有相似的性能.最佳答案“它们都是可变的”会误导你一点.确实,在list-appe

在下面链接的文章中,作者比较了python中不同字符串连接方法的效率:
http://www.skymind.com/~ocrow/python_string/

我不明白的一件事是,为什么方法3(可变字符阵列)导致比方法4(加入字符串列表)明显更慢的性能

它们都是可变的,我认为它们应具有相似的性能.

最佳答案“它们都是可变的”会误导你一点.

确实,在List-append方法中,列表是可变的.但建立清单并不是缓慢的部分.如果你有1000个平均长度为1000的字符串,你就会对数组进行1000000次突变,但只有1000个突变到列表中(加上1000个增量到字符串对象).

特别是,这意味着阵列必须花费1000倍的时间来扩展(分配新存储并复制到目前为止的全部内容).

List方法的缓慢部分是最后的str.join调用.但这不是可变的,也不需要任何扩展.它使用两次传递,首先计算所需的大小,然后将所有内容复制到其中.

此外,str.join中的代码已经(并且自9年前开始编写该文章以来一直有很多工作要优化它),因为它是一种非常常见且推荐的习惯用法,许多真正的程序依赖于每一个天;数组几乎没有被触及,因为它首次被添加到语言中.

但是,如果你真的想要了解这些差异,你必须看看来源.在2.7中,数组方法的主要工作是在array_fromstring,而List方法的主要工作是在string_join.你可以看到后者如何利用我们已经知道所有字符串的事实在开始时加入,而前者不能. 总结

以上是内存溢出为你收集整理的为比特串联,为什么列表比字符数组更快全部内容,希望文章能够帮你解决为比特串联,为什么列表比字符数组更快所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存