Python和C语言运行速度对比(累加1亿次)
1、说明:
测试是在win10平台下进行的,先给大家看一下计算机的配置:
测试环境:
Python3.6.4
GCC 8.1.0 # 需要自己安装哦~
G++ 8.1.0
2、测试C和Python分别累加到1亿,花费的时间
2.1、C语言程序
首先使用创建Test.c
文件,然后将Test.c
文件转化为DLL
(Win
下使用Python
调用DLL
,Ubuntu
下调用so
)。
将下列程序复制到Test.c
文件中,然后运行gcc -shared -o Test.dll Test.c
生成DLL
文件
#include "stdio.h"
// 关键:__declspec(dllexport) 申明将这个方法导出到DLL中。
__declspec(dllexport) int sum(int a)
{while (a < 100000000){/* code */a = a + 1;}// printf("%d", a);return a;
}
2.2、Python程序
创建python2c.py
文件,将下面程序复制到python2c.py
文件中,然后运行python2c.py
from ctypes import *
import time
from numba import jitdll = windll.LoadLibrary('Test.dll')def c_calc_sum():a=dll.sum(1)print(a)start_c = time.time()
c_calc_sum()
print(time.time() - start_c)# @jit
def calc_sum():sum_py = 0 for i in range(100000000):sum_py = sum_py + 1start_py = time.time()
calc_sum()
print(time.time() - start_py)
输出结果如下:
100000000
0.15740251541137695 # 说明:c语言计算结果
4.498934984207153 # 说明:Python语言计算结果
上面的测试,是分别使用C程序和Python程序累加计算1+1+1+1…(1亿次)
从结果中我们可以看出,使用C比Python快了约28倍。
3、测试C和Python(numba加速)分别累加到1亿,花费的时间
我们只需要将上述python2c.py
文件中的# @jit
注释去掉,也就是改为@jit即可实现numba加速。
看一下使用numba加速后Python的运行效率:
100000000
0.14839458465576172 # 说明:c语言计算结果
0.16844749450683594 # 说明:Python语言计算结果
4、结论
从上述结果我们可以看出:
1、分别使用c和python测试从1累加到1亿,c比python快了将近28倍(python不使用numba加速);
2、分别使用c和python测试从1累加到1亿,c比python快了将近1.4倍(python用numba加速);
Python和C语言运行速度对比(累加1亿次)相关推荐
- Cython,Python,C/C++的运行速度对比
关于Cython,Python,C/C++的运行速度的对比 测试环境: 处理器: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx 2.10 GHz 机带: ...
- python如何在没有环境的电脑上执行_没安装python的电脑可以运行python写的程序吗 python语言编写的程...
py2exe 能够把 Python script 转换成可以在windows上独立执行的(即不需安装Python)的exe程序(加上其它必需的运行时函数库). -- 摘自百度知道 py2exe能够把P ...
- python中如何插入C语言运行?
1. python中如何插入C语言运行? (1)编写C语言代码: #include<stdio.h>void CFun() {printf("---------我是c语言:--- ...
- go加载python_python培训 | python调用go语言来提速
在写一些对性能要求十分严格的功能的时候,python往往力不从心.毕竟是一个解释性的语言,没有办法和变异性的语言去比较速度和内存占用率.但是python的本身的特定就使得我们可以将耗时的操作移交给编译 ...
- java c 速度_Java和C#运行速度对比:Java比C#快约3倍
测试条件: Java版本: Java 8, .NET版本:v4.0, Release模式,针对x86平台优化 单线程模式. Java代码: package javatest; public class ...
- python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...
原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...
- python与c语言数据交互,python与c语言交互应用实例
1.python向c语言写数据 1) 先将接收端编译成一个共享链接库 gcc/arm-linux-gnueabihf-gcc -o bluetooth_proxy.so -shared -fPIC b ...
- python可以在linux运行_在linux运行python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux下编译安装python3与python2共存linux下默认系统自带p ...
- 新手学python还是c语言_py和c语言究竟新手该学哪个?
看到另外两个答主都建议先学C,那么我出个不一样的意见:先学Python. 对于新手来说,Python语法比较简单,学起来容易. 另外,Python很实用.这不仅是因为Python有很多现成的库,你可以 ...
- python输入完怎么运行-教你如何编写、保存与运行Python程序的方法
第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...
最新文章
- spring源码分析之spring注解@Aspect是如何工作的?
- 9号团队-团队任务4:每日立会(2018-11-26,2018-11-27)
- PLSQL_性能优化系列20_Oracle Result Cash结果缓存
- vld不输出泄漏信息_光纤天线方案和泄漏电缆方案的比较
- 氢气露点和湿度换算_如何创建氢气鼓组以获取乐趣和收益
- C# Rotating Oval
- Cocos2d-x Touch事件处理机制(better)
- 基于目标检测的电车充电插孔检测实践
- Package php5 have no installation candidate解决方案
- 三星电子能从硬件公司转型成软件公司吗?
- linux系统自动获取ip地址,Linux系统怎么自动获取ip地址用什么命令
- 高等数学:第八章 多元函数的微分法及其应用(6)微分法在几何上的应用
- kotlin-android-extensions过时了,迁移到ViewBinding
- 【时间与空间】基本概念
- 尝试Ping百度域名后的思考
- ST公司三轴加速度计LIS3DH应用
- c语言程序ax2 bx,计算ax2+bx+c程序清单计算机组成原理计算机系统概论.PPT
- 【雕刻机】Grbl程序使用入门
- Java 8 将Map转换为List
- java md5 decode_MD5编码工具类 MD5Code.java