首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么join方法比+操作符连接字符串效率高?

先来看段代码,分别使用join()方法和+操作符来连接十万个字符串,然后算出执行时间,文章会从C语言源码的角度来说明为什么会存在这样的效率差异

首先是+操作符,总共花费24.838000 seconds

另一个是join()方法,总共花费0.222000 seconds

这样差异就看出来啦,要注意的是这里的差异是由于太多字符串连接操作导致,如果只是一两个字符串连接,用+操作符会来的更简单。

本篇文章主要是解释出现这种效率差异的背后C语言源码是如何定义join()方法和+操作符的,底层的C是以PyStringObject对象来定义字符串的,+操作符效率低的原因是在Python定义的PyStringObject对象是个不可变对象。

这表示连接字符串时,必须创建新的PyStringObject对象,连接100000个PyStringObject对象,必须进行99999次的内存申请和搬运的工作,而join()方法仅仅对列表或元组中的一组PyStringObject对象进行连接操作,只需要分配一次内存,所以效率会高。

来看底层C语言源码是如何定义+操作符的,可以查看Objects\stringobject.c内容,此源码可在Python官网下载,不会查看上篇文章《【Python研发】从小整数对象池切入对C语言源码的理解》

对应的join()方法是string_join()函数

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180114G00V5H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券