1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Python與C++的速度有哪些區(qū)別

      這篇文章主要講解了“Python與C++的速度有哪些區(qū)別”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python與C++的速度有哪些區(qū)別”吧!

      10年積累的做網(wǎng)站、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有崆峒免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

      DNA K-mers簡(jiǎn)介

      DNA是一種稱為核苷酸的長(zhǎng)鏈單位。在DNA中,共有4種核苷酸類型,分別用字母A、C、G和T表示。人類(更準(zhǔn)確地說是智人)擁有核苷酸對(duì)30億個(gè)。例如,人類DNA的一小部分可能類似于:

      ACTAGGGATCATGAAGATAATGTTGGTGTTTGTATGGTTTTCAGACAATT

      在此示例中,如果從該字符串中選擇任意4個(gè)連續(xù)的核苷酸(即字母),它將是一個(gè)長(zhǎng)度為4的k-mer(可稱之為4-mer)。以下便是從此示例中衍生出來的一些4-mers例子:ACTA,CTAG,TAGG,AGGG,GGGA等。

      難點(diǎn)挑戰(zhàn)

      本文以生成所有可能的13-mers為例,從數(shù)學(xué)上講,這是一個(gè)帶有替換的排列問題。因此,共有4¹³個(gè)(67108864)可能的13-mers。下面將使用一個(gè)簡(jiǎn)單的算法在C++和Python中生成結(jié)果。

      方案比較

      為了方便比較C++和Python在此特定挑戰(zhàn)中的優(yōu)劣,我在兩種語言中使用了完全相同的算法。這兩種代碼均有意設(shè)計(jì)地簡(jiǎn)單而相似。同時(shí),避免使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu)或第三方包或庫(kù)。第一段代碼采用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!")

      運(yùn)行Python代碼,生成全部13-mers共6700萬個(gè)大約需要61.23秒。為了公平比較,我注釋掉了顯示k-mers的行。如果想在生成k-mers時(shí)顯示它們,也可以取消對(duì)這兩行的注釋。注意,顯示全部k-mers耗時(shí)很長(zhǎng)。如有需要,請(qǐng)操作CTRL+C中止代碼。

      現(xiàn)在,來看看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

      編譯后,運(yùn)行C++代碼,生成全部13-mers共6700萬個(gè)大約需要2.42秒。這意味著運(yùn)行相同算法,Python用時(shí)是C++的25倍多。然后,對(duì)14-mers和15-mers重復(fù)進(jìn)行此實(shí)驗(yàn)。匯總結(jié)果如下表所示:

      Python與C++的速度有哪些區(qū)別

      比較生成13-、14-和15-mers的Python和C++運(yùn)行結(jié)果。

      顯然,C++比Python快得多。對(duì)于大多數(shù)程序員和數(shù)據(jù)科學(xué)家而言,這是共識(shí)。但該示例表明,這種差異十分顯著。

      本示例并沒有使用CPU或GPU并行化,因其必須針對(duì)相應(yīng)類型的問題(密集并行難題)進(jìn)行。此外,示例也沒有大量涉及內(nèi)存。如果將運(yùn)行結(jié)果進(jìn)行存儲(chǔ)(出于某些特定原因),那么使用內(nèi)存管理在運(yùn)行C++和Python時(shí),將產(chǎn)生更顯著的差異。

      此示例和數(shù)以千計(jì)的其他事實(shí)表明,在處理大量數(shù)據(jù)或指數(shù)增長(zhǎng)的過程中,身為數(shù)據(jù)科學(xué)家,你應(yīng)該了解C++類語言。

      感謝各位的閱讀,以上就是“Python與C++的速度有哪些區(qū)別”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python與C++的速度有哪些區(qū)別這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


      分享題目:Python與C++的速度有哪些區(qū)別
      當(dāng)前URL:http://ef60e0e.cn/article/gdjcdh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        化州市| 霍山县| 尖扎县| 九寨沟县| 阿克苏市| 增城市| 南宫市| 湘阴县| 邢台县| 葫芦岛市| 洱源县| 香港 | 香格里拉县| 伊宁市| 阿拉善盟| 邵武市| 偃师市| 汝南县| 漳州市| 油尖旺区| 共和县| 青州市| 定西市| 灌阳县| 吉林市| 瑞金市| 咸阳市| 衡山县| 湘西| 江津市| 马公市| 含山县| 绥宁县| 梁平县| 通江县| 罗定市| 榆中县| 顺义区| 三穗县| 休宁县| 离岛区|