1、c比python快的原因

c是编译型语言,编译器直接将c的源码编译成机器语言运行,和像python、java这种解释型语言比减少了运行时解释翻译的时间,提高运行效率,其次c语言是没有像java语言的垃圾回收机制的,需要自行释放,降低本身内耗,也会提高其的执行效率。

 2、实验证明

下面我们分别使用c语言和python语言分别进行指定大小的累加求和来比较运行时间效率高低

  • C代码实现
#include<stdio.h>
#include<time.h>
int add(int num)
{   int sum = 0;for (int i = 0; i < num; i++){sum +=i;}return sum;
}
int main() {clock_t start, end;start = clock();add(1000000000);end = clock();printf("%f seconds\n",(double)(end - start) / CLOCKS_PER_SEC);
}
  • Python代码实现
import time
def test1(num):sum = 0for x in range(num):sum+=xreturn sum
if __name__ == '__main__':print("测试python代码")start = time.time()test1(1000000000)end = time.time()print (end-start)

3、结果

测试结果如下单位是秒,其实结果还是很惊人的,大家可能都知道c语言的执行速度远高于python,但是没想到会快这么多,差不多25倍的差距!

语言 运行时间
C 2.295000 seconds
Python 52.89267 seconds

4、Python如何使用C的代码提升计算效率

如果需求是需要只能使用python实现但是又要追求c语言的执行速度那该怎么办呢,其实依然有办法解决,目前我了解的有以下几个办法提升python的速度:

  • 优化代码
  • 多线程并行计算
  • 预编译py文件为pyc
  • 动态库或静态库调用C

5、扩展(python如何调用c编译的动态库文件)

windos下安装好微软或者gcc、mingw等编译器,这里我就不过多说明安装步骤了,百度有很多安装教程 ,确保安装后我们需要创建一个add.c的文件,然后附上如下代码:

#include<stdio.h>
int add(int num)
{   int sum = 0;for (int i = 0; i < num; i++){sum +=i;}return sum;
}

编写代码并确保可运行状态下,我们需要将其制作成windos可运行的动态库文件dll(linux下为.so文件)

# 编译动态库
gcc -c add.c -o add.o -fPIC
gcc -shared -o libadd.dll add.o

编译成功后会在本文件夹下生成.dll动态库文件,我们需要使用python调用动态库文件并使用add求和函数。

# python调用
from ctypes import *
def test2():add = CDLL('libadd.dll')nResult = add.add(10000000)

最后我们将python原生的求和和调用c动态库的求和进行比对

import time
from ctypes import *
add1 = CDLL('libadd.dll')
def test1(num):sum = 0for x in range(num):sum+=xreturn sum
def test2(num):nResult = add1.add(num)
if __name__ == '__main__':print("测试python代码")start = time.time()test1(1000000000)end = time.time()print (end-start)print("测试动态库代码")start1 = time.time()test2(1000000000)end2 = time.time()print (end2-start1)

比对的运行结果如下:

 6、简单聊聊python的优点

虽然python的执行效率远低于c语言,但是我个人依然非常喜欢python这门语言,并且目前python在不同方向上有很好应用场景:爬虫、人工智能、自动化测试等方向都不错~

最后如果喜欢就点一个爱心吧!感谢大家支持哦~

这就是为什么选择C语言不用python的原因相关推荐

  1. 什么是Python语言?Python成为热门编程语言的原因

    什么是Python语言?Python成为热门编程语言的原因,由于Python简单易学功能强大,可以适用于各种开发环境,一门语言可走遍打天下,比较适合初学者入门. Python是什么?百度百科:Pyth ...

  2. python是什么语言编写的程序称为_Python 学习(一)【Python语言简介-Python是什么】...

    Python是一种编程语言,它的名字来源于一个喜剧.也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用. Python是什么(转载自Primus) 著名的 ...

  3. java语言不用担心内存吗_不用担心智能手机的电池,只需使用它

    java语言不用担心内存吗 When you're trying to get the most life out of your device, it's easy to overthink bat ...

  4. @程序员,为什么选择 Racket 语言?

    Racket 作为众多 Lisp 方言中的一种,是一种可编程的计算机程序设计语言 ,同时也是一个程序设计环境.其也曾一度被列入教科书的素材,但是对于这门小众化语言,是否有必要上手? 作者 | beau ...

  5. python用什么来写模块-使用C语言编写Python模块-引子【转】

    为什么要用C语言写Python模块,是Python不够香么?还是觉得头发还茂盛?都不是.因为C语言模块有几个显而易见的好处: 可以使用Python调用C标准库.系统调用等; 假设已经有了一堆C代码实现 ...

  6. 易语言和python混合编程_关于易语言与Python的一点想法

    易语言与python的一点想法">关于易语言与Python的一点想法 小香蕉 2019年7月11日 说在前面 最近吃饭的时候总是会想很多关于易语言的事情.易语言是我学会的第一门语言,虽 ...

  7. C语言 vs要安装什么_我为什么要从C语言转战Python语言,盘点一下未来计划

    大家好,感谢朋友们的阅读,最近写了一些在C语言学习过程中,理论上的一些重要知识点,除了自己的一些知识分享外,感谢在朋友们在评论区对文章内容的补充. 快速学习了C语言后,我们就需要进入下一阶段的学习,按 ...

  8. rust python扩展_Rust语言优化Python性能案例

    原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...

  9. python语言能做什么软件-什么是Python语言,Python语言可以用来做什么?

    什么是Python语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaS ...

最新文章

  1. switch( )的经典引用
  2. 数据库设计笔记——概述(一)
  3. oracle数据库改名步骤,oracle 11g2 数据库改名详细解释 oracle数据库改名详解 oracle database 改名详解 dbname...
  4. “刚毕业1年,做Python挣了60W!”网友:吹的不多..
  5. Java实验4 面向对象基础
  6. java 读取pdf、word、Excel文件
  7. shiro filter
  8. Funcode游戏设计C语言小飞虫
  9. 阿里巴巴Mysql规范
  10. 【芯片使用】PCF8591
  11. 华为设备VRRP多VLAN负载分担
  12. Angular Img标签自定义请求header Authorization
  13. long(Long)与int(Integer)四种类型之间互相转换的方法分享
  14. NanoHttpd Demo是个好东西
  15. Java简单投票系统
  16. linux系统如何卸载所有程序,Linux系统中完全卸载删除程序的命令
  17. MFC在对话框中绘制图像
  18. 计划处理链的很多种情况factory calendar
  19. 【无人机】基于Matlab的四旋翼无人机控制仿真
  20. QTabWidget 样式例子

热门文章

  1. rtmplib rtmp协议过程分析
  2. 含文档+PPT+源码等]精品基于Uniapp实现的Android的餐饮管理系统实现的App[包运行成功]计算机毕业设计安卓项目源码
  3. 关于笔记本电脑的选购
  4. Spring Cloud Alibaba Sentinel - - > 容错机制
  5. TCP/IP四层模型、HTTP、HTTPS、TCP
  6. Swiper Social项目(一): Swiper Social项⽬概览及项⽬⽬标(类似于探探)
  7. bing搜索PubHub发布商指南
  8. 数据结构:栈(Stack)
  9. Stocks VS Securities
  10. Bean Definition 生成过程详解