如PEP 484中所述:
使用类型提示进行性能优化仍然是读者的练习。
假设有人对这项练习感兴趣,那么即使是部分进行也有多难?是否存在在解释语言中使用类型提示来提高执行速度的现有技术,或者这只能通过使用JIT编译器来实现?
我应该注意到,我也明白这是一个非目标,并且:
Python仍然是一种动态类型的语言,并且作者不希望永远强制类型提示,即使按惯例也是如此。
因此,我理解通过鼓励按惯例提供类型提示,提高速度的努力将违背这一点。但是,我仍然对这项任务的难度感到好奇。
更新:虽然此网站的问题过于宽泛,但它是partially answered in the PyPy FAQ:
......速度效益非常小。
原因有几个原因。
其中一个是注释 在错误的级别(例如PEP 484“int”对应于Python 3的int 类型,不一定适合一个机器字;甚至 更糟糕的是,“int”注释允许任意int子类。)
另一个 是否需要更多信息来生成良好的代码(例如 “这里调用的这个
f()
真的意味着这个功能,永远不会 被猴子修补“ - 与len()
或list()
相同,顺便说一句。第三 原因是PyPy的JIT痕迹中的某些“警卫”实际上没有 明显的相应类型(例如“这个dict到目前为止使用的是键 不要覆盖__hash__
,以便实现更高效的实施 用过的”)。许多警卫甚至没有任何类型的通信 all(“此类属性未被修改”;“循环计数器确实如此 没有达到零,所以我们不需要释放GIL“;等等。)