是否有可能让CPython知道类型提示?

时间:2017-05-09 01:33:13

标签: python cpython typing

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“;等等。)

0 个答案:

没有答案