Python3.11的基准测试
Python是数据科学(DS)和机器学习(ML)中最常用的脚本语言之一。根据PopularitY of Programming Languages,Python 是谷歌搜索最多的语言。除了它是一种将各种 DS/ML 解决方案整合在一起的优秀胶水语言之外,它还有许多其他的库可以对数据做各种各样的事情。
大约在一个月前,我们得到了新的 Python 年度发行版 - 3.11版。我对这个新版本感到非常兴奋,因为这个版本的主要特点是速度显著提高。
在各种社交媒体上,我们已经看到很多人测试新版本的帖子,他们的测试结果令人震惊。但了解 Python3.11 真正有多快的最好方法是自己运行测试。
在这篇文章中,我将分享我对 Python3.11 的逐步分析。所有代码都可以在Github上找到。
https://github.com/CYang828/python-speedy

对编程语言进行基准测试一点也不简单。当你读 x 比 y 快时,你应该对结果持怀疑态度。算法的一个实现可能比 x 好,而另一个实现比 y 好。对于我们的基准测试来说,我们尽可能的希望它能简单一些,因为我们正在用 Python 测试Python,但我们可能已经从语言中选择了一些影响不大的元素。考虑到这一点,我想介绍我用于基准测试的算法:基因组组装算法 DNA K-mers。
基因组组装算法 DNA K-mers。
这个算法的思想很简单,DNA 是一个长串序列,称为核苷酸。在 DNA 中,有 4 种核苷酸以字母 A、C、G 和 T 表示。人类(或者更准确地说是智人)有 30 亿个核苷酸对。例如,人类 DNA 的一小部分可能是:
ACTAGGGATCATGAAGATAATGTTGGTGTTTGTATGGTTTTCAGACAATT
在这个例子中,如果想从这个字符串中选择任何 4 个连续的核苷酸(即字母),它将是一个长度为 4 的k-mer(我们称之为4-mer)。以下是从示例中导出的一些 4-mers 示例。
ACTA, CTAG, TAGG, AGGG, GGGA, etc.
对于本文,让我们生成所有可能的 13-mers。从数学上讲,这是一个置换问题。因此,我们有 4¹³(=67108864)可能的 13-mers。我用一个简单的算法在 C++ 和 Python 中生成结果。让我们看看不同 Python 版本和 C++ 的比较结果。
对比 Python 和 C++ 的结果
Python 不同版本的测试
def