python 字符串的驻留机制及优缺点
作者:解忧杂货铺-程序员分店 时间:2022-11-16 10:07:37
说明
字符串驻留是一种仅保存一份相同且不可变字符串的方法。不同的值被存放在字符串驻留池中,发生驻留之后, 许多变量可能指向内存中的相同字符串对象, 从而节省内存.
原理
系统维护interned字典,记录已被驻留的字符串对象
当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1
若不存在,则记录a到interned中
驻留时机
所有长度为 0 和长度为 1 的字符串都被驻留
字符串只在编译时进行驻留,而非运行时
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