python 字符串的驻留机制及优缺点

作者:解忧杂货铺-程序员分店 时间:2022-11-16 10:07:37 

说明

字符串驻留是一种仅保存一份相同且不可变字符串的方法。不同的值被存放在字符串驻留池中,发生驻留之后, 许多变量可能指向内存中的相同字符串对象, 从而节省内存.

原理

  • 系统维护interned字典,记录已被驻留的字符串对象

  • 当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1

  • 若不存在,则记录a到interned中

驻留时机

  1. 所有长度为 0 和长度为 1 的字符串都被驻留

  2. 字符串只在编译时进行驻留,而非运行时


a = 'hi' # a变量被驻留
b = ''.join(['h', 'i']) # 变量不会被驻留
print(a is b) # False

3.字符串中只包含字母,数字或下划线时将会驻留


a = 'hello'
b = 'hello'
print(a is b) # True

a = 'hello!'
b = 'hello!'
print(a is b) # False
```

常量折叠是 Python 中的一种 窥孔优化技术. 这意味着在编译时表达式 ‘a'*20 会被替换为 ‘aaaaaaaaaaaaaaaaaaaa' 以减少运行时的时钟周期. 只有长度小于 20 的字符串才会发生常量折叠.样的设计目的是为了保护.pcy文件不会被错误代码搞的过大


a = 'a' * 10
b = 'aaaaaaaaaa'
print(a is b) # True

a = 'a' * 21
b = 'aaaaaaaaaaaaaaaaaaaaa'
print(a is b) #False

字符串驻留机制的优缺点

优点:能够提高一些字符串处理任务在时间和空间上的性能,非驻留比较效率为o(n),驻留时比较效率为o(1)
缺点:在创建或驻留字符串时的会花费更多的时间

来源:https://blog.csdn.net/qq_20831785/article/details/106845216

标签:python,字符串,驻留
0
投稿

猜你喜欢

  • uni-app使用微信小程序云函数的步骤示例

    2024-05-13 09:10:51
  • Python2.X/Python3.X中urllib库区别讲解

    2022-08-03 01:45:39
  • sqlserver下Kill 所有连接到某一数据库的连接

    2024-01-21 18:05:51
  • Python 余弦相似度与皮尔逊相关系数 计算实例

    2022-02-24 01:32:52
  • ES6入门教程之let和const命令详解

    2024-05-22 10:37:07
  • SQL SERVER EXPRESS 常见问题及解决办法

    2008-09-13 19:07:00
  • js实现页面图片消除效果

    2024-04-28 10:20:54
  • Form表单及django的form表单的补充

    2023-07-21 09:40:04
  • MySQL安装配置以及安装失败解决过程

    2024-01-13 18:55:28
  • Python检查ping终端的方法

    2023-04-16 07:03:37
  • oracle增加表空间大小两种实现方法

    2024-01-15 14:34:12
  • 在Python中的Django框架中进行字符串翻译

    2022-11-04 09:39:03
  • tensorflow使用freeze_graph.py将ckpt转为pb文件的方法

    2023-01-31 15:31:05
  • 超详细汇总21个值得收藏的mysql优化实践

    2024-01-17 21:01:18
  • python数字图像处理实现直方图与均衡化

    2021-04-01 14:44:59
  • python 实现简单的计算器(gui界面)

    2022-11-14 14:35:14
  • 细化解析:SQL Server数据库的集群设计

    2009-02-05 15:59:00
  • Python K最近邻从原理到实现的方法

    2022-10-13 09:41:45
  • 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    2024-05-11 10:14:21
  • 解决IDEA GIT记录无法查看提交文件的问题

    2022-12-08 01:46:25
  • asp之家 网络编程 m.aspxhome.com