性能比较静态类型 Python 3.6+ 与 Cython

iba*_*ond 5 python static-typing cython

最近 Python 3.6 添加了静态类型作为强制执行某些类型的一种方式。我曾经从 Cython 获得相同的功能,与普通 Python 相比,它获得了高度优化的功能。

我的问题是:在使用新的 Python 静态类型时,我们是否也会获得显着的性能提升?每种方法的优缺点?

小智 7

Python 中的静态类型并不使其成为一种编译型编程语言。因此,就性能而言,您应该始终从 Cython 获得更好的性能(编译应该始终击败解释)。

Python 新添加的静态类型的主要目的是通过牺牲 Python 的一些哲学来以无缝的方式执行类型检查。

简而言之:Cython 提高速度,Python3.6 提高解释/更多 Python 方法。

  • 编译使得它的可移植性较差 (2认同)

Ole*_*nko 5

在任何现有版本的 CPython、3.7 或更早版本中都没有静态类型

CPython 3.6 中对可选类型注释的支持(也向后移植到 3.5)有助于静态代码分析器等外部工具验证类型在程序中的使用是否一致。

类型提示对字节码编译或执行没有影响。

CPython 3.6 新增功能

与静态类型语言中的变量声明相比,注释语法的目标是提供一种简单的方法,通过抽象语法树和注释属性为第三方工具和库指定结构化类型元数据。

请注意,在 Cython 中可以使用类型提示语法来定义 C 类型(类型声明语法)。