这就是为什么选择C语言不用python的原因
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的原因相关推荐
- 什么是Python语言?Python成为热门编程语言的原因
什么是Python语言?Python成为热门编程语言的原因,由于Python简单易学功能强大,可以适用于各种开发环境,一门语言可走遍打天下,比较适合初学者入门. Python是什么?百度百科:Pyth ...
- python是什么语言编写的程序称为_Python 学习(一)【Python语言简介-Python是什么】...
Python是一种编程语言,它的名字来源于一个喜剧.也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用. Python是什么(转载自Primus) 著名的 ...
- java语言不用担心内存吗_不用担心智能手机的电池,只需使用它
java语言不用担心内存吗 When you're trying to get the most life out of your device, it's easy to overthink bat ...
- @程序员,为什么选择 Racket 语言?
Racket 作为众多 Lisp 方言中的一种,是一种可编程的计算机程序设计语言 ,同时也是一个程序设计环境.其也曾一度被列入教科书的素材,但是对于这门小众化语言,是否有必要上手? 作者 | beau ...
- python用什么来写模块-使用C语言编写Python模块-引子【转】
为什么要用C语言写Python模块,是Python不够香么?还是觉得头发还茂盛?都不是.因为C语言模块有几个显而易见的好处: 可以使用Python调用C标准库.系统调用等; 假设已经有了一堆C代码实现 ...
- 易语言和python混合编程_关于易语言与Python的一点想法
易语言与python的一点想法">关于易语言与Python的一点想法 小香蕉 2019年7月11日 说在前面 最近吃饭的时候总是会想很多关于易语言的事情.易语言是我学会的第一门语言,虽 ...
- C语言 vs要安装什么_我为什么要从C语言转战Python语言,盘点一下未来计划
大家好,感谢朋友们的阅读,最近写了一些在C语言学习过程中,理论上的一些重要知识点,除了自己的一些知识分享外,感谢在朋友们在评论区对文章内容的补充. 快速学习了C语言后,我们就需要进入下一阶段的学习,按 ...
- rust python扩展_Rust语言优化Python性能案例
原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...
- python语言能做什么软件-什么是Python语言,Python语言可以用来做什么?
什么是Python语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaS ...
最新文章
- switch( )的经典引用
- 数据库设计笔记——概述(一)
- oracle数据库改名步骤,oracle 11g2 数据库改名详细解释 oracle数据库改名详解 oracle database 改名详解 dbname...
- “刚毕业1年,做Python挣了60W!”网友:吹的不多..
- Java实验4 面向对象基础
- java 读取pdf、word、Excel文件
- shiro filter
- Funcode游戏设计C语言小飞虫
- 阿里巴巴Mysql规范
- 【芯片使用】PCF8591
- 华为设备VRRP多VLAN负载分担
- Angular Img标签自定义请求header Authorization
- long(Long)与int(Integer)四种类型之间互相转换的方法分享
- NanoHttpd Demo是个好东西
- Java简单投票系统
- linux系统如何卸载所有程序,Linux系统中完全卸载删除程序的命令
- MFC在对话框中绘制图像
- 计划处理链的很多种情况factory calendar
- 【无人机】基于Matlab的四旋翼无人机控制仿真
- QTabWidget 样式例子
热门文章
- rtmplib rtmp协议过程分析
- 含文档+PPT+源码等]精品基于Uniapp实现的Android的餐饮管理系统实现的App[包运行成功]计算机毕业设计安卓项目源码
- 关于笔记本电脑的选购
- Spring Cloud Alibaba Sentinel - - > 容错机制
- TCP/IP四层模型、HTTP、HTTPS、TCP
- Swiper Social项目(一): Swiper Social项⽬概览及项⽬⽬标(类似于探探)
- bing搜索PubHub发布商指南
- 数据结构:栈(Stack)
- Stocks VS Securities
- Bean Definition 生成过程详解