广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Python与C++的速度有哪些区别
  • 600
分享到

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

2023-06-15 19:06:54 600人浏览 泡泡鱼
摘要

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

这篇文章主要讲解了“pythonc++的速度有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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<iOStream>            #include<string>              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<len_str;i++)               {                    s += opt[0];               }                  for (int i=0; i<len_str;i++)               {                    s_last += opt.back();               }                  int pos = 0;               int counter = 1;               while (s != s_last)               {                      counter ++;                    // You canuncomment the next line to see all k-mers.                    // cout << s<< endl;                     change_next = true;                    for (int i=0; i<len_str;i++)                    {                        if (change_next)                        {                            if (s[i] == opt.back())                            {                                s[i] = convert(s[i]);                                change_next = true;                            } else {                                s[i] = convert(s[i]);                                break;                            }                        }                    }               }                  // You can uncomment the next line tosee all k-mers.               // cout << s << endl;               cout << "Number of generated k-mers: " <<counter << endl;               cout << "Finish!" << endl;               return0;            }

编译后,运行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++的速度有哪些区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python与C++的速度有哪些区别

本文链接: https://www.lsjlt.com/news/281272.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python与C++的速度有哪些区别
    这篇文章主要讲解了“Python与C++的速度有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python与C++的速度有哪些区别”吧!DNA K-mers简介DNA是一种称为核苷酸...
    99+
    2023-06-15
  • Python与c++的区别有哪些
    Python与c++的区别有:1、C++要比Python的运行效率高,在运行代码时都会变成CPU指令来执行,但Python转换出来的CPU指令比C++多;2、Python的开发效率比C++更快,Python简单易学、适合新手操作;3、Pyt...
    99+
    2022-10-10
  • python与C语言的区别有哪些
    python与C语言的区别有:1、python属于动态、强类型类型语言,而C属于静态类型语言;2、python主要是面向对象,而C中没有对象这个概念,只有“数据的表示”;3、两者的变量类型不同,Python六个标准的数据类型,分别是Numb...
    99+
    2022-10-05
  • Python与PHP的区别有哪些
    Python与PHP的区别有:1、Python中框架少,而PHP相对而言成熟的框架多;2、PHP是面向web的语言,而Python是多用途语言,也能够用来做web开发;3、Python使用非常严格的缩进强制执行,使它比PHP更具可读性。Py...
    99+
    2022-10-22
  • python与java的区别有哪些
    python与java的区别有:1、Python主要应用于游戏开发、搜索引擎、图形图像处理、脚本开发等领域,而Java则应用于服务器开发,web开发和安卓开发等领域;2、Python比Java简单,易学并且开发效率高;3、Java运行效率高...
    99+
    2022-10-19
  • python与javascript有哪些区别
    本篇内容主要讲解“python与javascript有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python与javascript有哪些区别”吧! ...
    99+
    2022-10-19
  • java与c语言的区别有哪些?
    java与c语言的区别有哪些?1、Java与C内存分配不同:Java中内存分配五个区,分别为栈区(存储的是局部变量,使用完毕,立即回收),堆区(存储的是new出来的东西,实体,对象,每一个对象都有地址值,每个对象的数据都有默认值,使用完毕后...
    99+
    2020-10-28
    java教程 java c语言
  • c语言与javascript的区别有哪些
    这篇文章给大家分享的是有关c语言与javascript的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 区别:1、C语言主要是被编译成机器语...
    99+
    2022-10-19
  • C++结构体与类的区别有哪些
    这篇文章给大家分享的是有关C++结构体与类的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取...
    99+
    2023-06-25
  • 聊聊Python与Golang的区别有哪些
    Python是一种高级编程语言,它被广泛用于数据科学、计算机科学、人工智能和互联网开发等领域。而Golang是一种新型的编程语言,也被称为Go,由Google开发,它的设计目的是为了在多核和网络环境下提供更好的性能和可伸缩性。语言设计Pyt...
    99+
    2023-05-14
  • c语言与go语言的区别有哪些
    小编给大家分享一下c语言与go语言的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!区别:1、C语言源文件的扩展名是“.h”和“.c”,Go语言源文件的扩展名是“.go”。2、C语言中通过文件来管理代码,Go语言中...
    99+
    2023-06-06
  • C++中指针与引用的区别有哪些
    这篇文章主要介绍C++中指针与引用的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、指针的声明上文中提到,指针和其所指向的变量就像硬币的两面,因此通过取址符号"&"我们可以找到...
    99+
    2023-06-20
  • 浅析Python与Java和C之间有哪些细微区别
    目录1.变量是什么(1)C认为变量应该是容器(2)Python认为变量应该是标签(3)Java认为我们不应该关心这个问题2.循环与迭代(1)传统的循环(2)继承与发展(3)新的问题3...
    99+
    2022-11-11
  • python进程与线程的区别有哪些
    python中进程与线程的区别:1.基本单位不同;2.对应关系不同;3.地址空间不同;python中进程与线程的区别有以下几点基本单位不同线程中作为调度和分配的基本单位,而进程则是作为拥有资源的基本单位。对应关系不同一个线程只能属于一个进程...
    99+
    2022-10-08
  • c#和java的区别有哪些
    Java和C#都是编程的语言,它们是两个不同方向的两种语言。相同点:他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装、继承、多态)。区别:1.c#中的命名空间是namespace类似于Java中的package(包),在J...
    99+
    2021-05-04
    java教程 c# java 区别
  • c++和javascript的区别有哪些
    本篇文章为大家展示了c++和javascript的区别有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。区别:1、C++是静态语言,而javascript是动态语...
    99+
    2022-10-19
  • java和c++的区别有哪些
    这篇文章主要介绍java和c++的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:Java不可以将一个非布尔值当做布尔值在逻辑表达式中使用,C++却可以。C++引入了操作符重载机制,Java不支持。C+...
    99+
    2023-06-14
  • 机器学习与深度学习的区别有哪些
    机器学习和深度学习是两个相关但不完全相同的概念。以下是它们之间的一些区别:1. 概念:机器学习是一种广义的概念,指的是机器通过学习数...
    99+
    2023-09-21
    机器学习 深度学习
  • c#和JavaScript有哪些区别
    这篇文章将为大家详细讲解有关c#和JavaScript有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 区别:1、JavaScript...
    99+
    2022-10-19
  • C语言和C#有哪些区别
    这篇文章主要介绍“C语言和C#有哪些区别”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言和C#有哪些区别”文章能帮助大家解决问题。C#是三大主流OOP(面向对象编程)语言(C++,Java,C#...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作