千家信息网

Python与C++的速度有哪些区别

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要讲解了"Python与C++的速度有哪些区别",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python与C++的速度有哪些区别"吧!DNA
千家信息网最后更新 2025年01月20日Python与C++的速度有哪些区别

这篇文章主要讲解了"Python与C++的速度有哪些区别",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python与C++的速度有哪些区别"吧!

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等。

难点挑战

本文以生成所有可能的13-mers为例,从数学上讲,这是一个带有替换的排列问题。因此,共有4¹³个(67108864)可能的13-mers。下面将使用一个简单的算法在C++和Python中生成结果。

方案比较

为了方便比较C++和Python在此特定挑战中的优劣,我在两种语言中使用了完全相同的算法。这两种代码均有意设计地简单而相似。同时,避免使用复杂的数据结构或第三方包或库。第一段代码采用Python编写。

defconvert(c):                if (c =='A'): return'C'                if (c =='C'): return'G'                if (c =='G'): return'T'                if (c =='T'): return'A'              print("Start")              opt ="ACGT"             s =""             s_last =""             len_str =13              for i inrange(len_str):                s += opt[0]              for i inrange(len_str):                s_last += opt[-1]              pos =0             counter =1             while (s != s_last):                counter +=1                # You can uncomment the next line to see all k-mers.                # print(s)                change_next =True                for i inrange(len_str):                     if (change_next):                         if (s[i] == opt[-1]):                             ss = s[:i] +convert(s[i]) + s[i+1:]                             change_next =True                         else:                             ss = s[:i] +convert(s[i]) + s[i+1:]                             break              # You canuncomment the next line to see all k-mers.             # print(s)             print("Number ofgenerated k-mers: {}".format(counter))             print("Finish!")

运行Python代码,生成全部13-mers共6700万个大约需要61.23秒。为了公平比较,我注释掉了显示k-mers的行。如果想在生成k-mers时显示它们,也可以取消对这两行的注释。注意,显示全部k-mers耗时很长。如有需要,请操作CTRL+C中止代码。

现在,来看看C++中同样的算法:

#include            #include              usingnamespacestd;              charconvert(char c)            {               if (c == 'A') return'C';               if (c == 'C') return'G';               if (c == 'G') return'T';               if (c == 'T') return'A';               return' ';            }              intmain()            {               cout << "Start" << endl;                  string opt = "ACGT";               string s = "";               string s_last = "";               int len_str = 13;               bool change_next;                  for (int i=0; i

编译后,运行C++代码,生成全部13-mers共6700万个大约需要2.42秒。这意味着运行相同算法,Python用时是C++的25倍多。然后,对14-mers和15-mers重复进行此实验。汇总结果如下表所示:


比较生成13-、14-和15-mers的Python和C++运行结果。

显然,C++比Python快得多。对于大多数程序员和数据科学家而言,这是共识。但该示例表明,这种差异十分显著。

本示例并没有使用CPU或GPU并行化,因其必须针对相应类型的问题(密集并行难题)进行。此外,示例也没有大量涉及内存。如果将运行结果进行存储(出于某些特定原因),那么使用内存管理在运行C++和Python时,将产生更显著的差异。

此示例和数以千计的其他事实表明,在处理大量数据或指数增长的过程中,身为数据科学家,你应该了解C++类语言。

感谢各位的阅读,以上就是"Python与C++的速度有哪些区别"的内容了,经过本文的学习后,相信大家对Python与C++的速度有哪些区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

C++ 示例 运行 代码 生成 速度 数据 核苷酸 算法 结果 问题 学习 显著 相同 人类 内存 内容 字母 差异 注释 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网数据库2020年4月答案 互联网科技公司怎么注册 软件开发设计工具都有哪些 魔兽世界十年前的服务器 怎样ping外网服务器 苹果服务器连接不上修复了吗 网络安全外包驻场都干什么 计算机网络技术与维护好吗 怎么部署生产环境到阿里云服务器 软件开发华为和阿里巴巴哪个好 网络安全设备上的ha是什么 昭通禁毒支队网络安全 中美互联网科技公司对比图 苹果游戏中心服务器无法连接 ie交互软件开发 宣传网络安全主题名称 ibm服务器登录管理界面 杨浦区品牌软件开发品质保障 服务器角色管理在哪里 什么叫数据库访问组件 阿里元服务器 安全组 广东互联网科技公司 数据库的排序功能是什么 抖音服务器地址怎么查看 大兴hp服务器回收门店 小学网络安全教育宣传 微信数据库er图 网络安全实务 广德现代软件开发服务价格大全 手机怎么关闭网络安全保护
0