成都网站建设设计

将想法与焦点和您一起共享

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

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

10年积累的做网站、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有崆峒免费网站建设让你可以放心的选择与我们合作。

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重复进行此实验。汇总结果如下表所示:

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

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

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

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

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

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


本文题目:Python与C++的速度有哪些区别
转载来于:http://chengdu.cdxwcx.cn/article/gdjcdh.html