聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 正在进行安全检测...

正在进行安全检测...

时间:2023-11-12 06:32:33    下载该word文档

Python中有效的字符串合并方法
介绍
Python编程语言中,构造一些较长的字符串事常常会产生一些运行很慢的代码。本文我将研究不同字符串合并方法的计算性能。
Python中,字符串(string对象是不可变的(每次关联一个新的字符串变量都会在内存中创建一个新的对象(译注:类同于Java,.NET等现代语言,他们都会在其VM中保留一个字符串池,里面保存所有产生的目标字符串值或临时字符串值。这方面它与perlVB等语言中的字符串变量可以任意修改有所不同。如果使用一些比较显而易见的方法(如:每次都是在新产生的字符串末尾添加一个新短字符串片段从一些短字符串片段构造长字符串在Python中可能会不是很有效率。每次你的在字符串末尾添加内容,Python解释器都会创建一个新的对象并且复制新产生的对象和原来的对象到解释器中(译注:应该是复制到Python解释器的字符串常量池中。随着处理的字符串的增多,这样的处理过程将会越来越慢。
其他一些其他的方法呢?他们是否有效并且与原始方法相比它们性能方面如何?我决定试试一些其他的构造长字符串的方法,并看看它们在效率上都有啥不同。
为了比较,我需要一个测试程序来调用大量的字符串片段构造长字符串。它不应该有太多的额外计算,好让我们测试的性能仅仅依赖于字符串操作的性能。
我的测试用例是合并一些从0到某个大整数的数字。这样我们也可以很容易的改变需要产生字符串的大小(译注:改变那个大整数。比如前20个整数产生如下的字符串:


0123456789010111213141516171819尽管这个特别的测试问题不会有任何的现实应用,但我想,因为它很容易编程并且在概念和计算上都简单,那么它能是一个很好的测试用例。这些字符串片段在值和长度上都不同,这也可以防止解释器或硬件对依赖于重复字节的优化(译注:比如对重复相同的字符串进行压缩等处理。我不认为Python解释器真的这样做了,但是作为测试的一个好原则就是不能受这种优化情况的影响。
六个方法
下面是我测试的一些方法,每小段Python代码都返回相同的字符串。
方法一:朴素的添加(Method1:Naiveappending
defmethod1(:
out_str=''
fornuminxrange(loop_count:
out_str+=`num`
returnout_str对于我来说,这是解决该问题的最显而易见的方法。使用字符串连接操作(+=添加每个字符串片段到字符串中。loop_count告诉我们要添加的字符串片段数。第四行中的数

免费下载 Word文档免费下载: 正在进行安全检测...

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服