python变量交换性能优化
来源:互联网 发布:sql生成序号 编辑:程序博客网 时间:2024/06/04 18:54
从多方面新讲python性能优化看到交换两个变量的值可以使用
a,b = b,a这样可以提高性能
>>> from timeit import Timer>>> Timer("t=a;a=b;b=t","a=1;b=2").timeit()0.06279781319366587>>> Timer("a,b=b,a","a=1;b=2").timeit()0.0378979925538232>>>
从运行时间上看,确实节省了快一半的时间
通过dis得到python字节码
>>> def func():... a,b = b,a...>>> import dis>>> dis.dis(func) 2 0 LOAD_FAST 0 (b) 3 LOAD_FAST 1 (a) 6 ROT_TWO 7 STORE_FAST 1 (a) 10 STORE_FAST 0 (b) 13 LOAD_CONST 0 (None) 16 RETURN_VALUE>>>
可以看出主要是ROT_TWO指令的功劳:
查阅python文档可以知道有ROT_TWO ROT_THREE ROT_FOUR这样的指令,可以直接交换两个变量、三个变量、四个变量的值
在python3.4的源码中查阅ceval.c文件可以看到:
TARGET(ROT_TWO) { PyObject *top = TOP(); PyObject *second = SECOND(); SET_TOP(second); SET_SECOND(top); FAST_DISPATCH(); } TARGET(ROT_THREE) { PyObject *top = TOP(); PyObject *second = SECOND(); PyObject *third = THIRD(); SET_TOP(second); SET_SECOND(third); SET_THIRD(top); FAST_DISPATCH(); }就是这些指令的具体C语言实现了
归根究底,速度快还是因为a,b = b,a的方式全部是使用指针操作
1 0
- python变量交换性能优化
- python 中的变量交换
- python 中的变量交换
- python变量交换,不用第三者
- python中交换两个变量
- 两个变量交换值 优化方法
- python 之性能优化
- python 性能优化
- python性能优化摘录
- python性能优化
- Python性能优化指南
- Python性能优化
- python性能优化指南
- Python 性能优化
- Python性能优化指南
- python 性能优化篇
- python的性能优化
- Python 代码性能优化
- 使用NeatUpload控件实现ASP.NET大文件上传
- 硬币组合问题
- 多线程开发
- 两种判断节点类型的方式和对比节点值
- mac 下javaHL的解决 no svnjavahl in java.library.path
- python变量交换性能优化
- 黑马程序员_java基础之类加载器解析
- Xcode6之后没有空模板的解决方案
- 第221天
- ios8
- alpha-beta pruning
- 对C++中的构造函数和析构函数的说明
- Jackson 框架,轻易转换JSON
- 网站安全通讯设计