File tree 1 file changed +3
-3
lines changed
1 file changed +3
-3
lines changed Original file line number Diff line number Diff line change 13
13
关于程序优化的第一个准则是“不要优化”,第二个准则是“不要优化那些无关紧要的部分”。
14
14
如果你的程序运行缓慢,首先你得使用14.13小节的技术先对它进行性能测试找到问题所在。
15
15
16
- 通常来讲你会发现你得程序在少数几个热点地方花费了大量时间 ,
16
+ 通常来讲你会发现你得程序在少数几个热点位置花费了大量时间 ,
17
17
比如内存的数据处理循环。一旦你定位到这些点,你就可以使用下面这些实用技术来加速程序运行。
18
18
19
19
**使用函数 **
116
116
result_append(sqrt(n))
117
117
return result
118
118
119
- 在这个版本中,``sqrt `` 从 ``match `` 模块被拿出并放入了一个局部变量中。
119
+ 在这个版本中,``sqrt `` 从 ``math `` 模块被拿出并放入了一个局部变量中。
120
120
如果你运行这个代码,大概花费25秒(对于之前29秒又是一个改进)。
121
121
这个额外的加速原因是因为对于局部变量 ``sqrt `` 的查找要快于全局变量 ``sqrt ``
122
122
234
234
如果你的优化要求比较高,本节的这些简单技术满足不了,那么你可以研究下基于即时编译(JIT)技术的一些工具。
235
235
例如,PyPy工程是Python解释器的另外一种实现,它会分析你的程序运行并对那些频繁执行的部分生成本机机器码。
236
236
它有时候能极大的提升性能,通常可以接近C代码的速度。
237
- 不过可惜的是,到写这本书位置 ,PyPy还不能完全支持Python3.
237
+ 不过可惜的是,到写这本书为止 ,PyPy还不能完全支持Python3.
238
238
因此,这个是你将来需要去研究的。你还可以考虑下Numba工程,
239
239
Numba是一个在你使用装饰器来选择Python函数进行优化时的动态编译器。
240
240
这些函数会使用LLVM被编译成本地机器码。它同样可以极大的提升性能。
You can’t perform that action at this time.
0 commit comments