当前位置: 首页 > news >正文

嵌入式开发培训机构排名资源网站优化排名软件公司

嵌入式开发培训机构排名,资源网站优化排名软件公司,杭州做网站公司排名,个人网站一定要备案吗迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 简介 Python 是一门应用非常广泛的高级语言,但是,长久以来,Python的运行速度一直被人诟病,相比 c/c、java、c#、javascript 等一众高级编程语言,完全没有优势。 那…

2ba2b7b1ec86b8d687a7fc5e3d0aae50.png

迷途小书童的 Note

读完需要

6

分钟

速读仅需 2 分钟

1

   

简介

Python 是一门应用非常广泛的高级语言,但是,长久以来,Python的运行速度一直被人诟病,相比 c/c++、java、c#、javascript 等一众高级编程语言,完全没有优势。

那么真的没有办法提升 Python 程序的运行速度吗?相信看完本文,你应该会有答案。

2

   

示例

这里以找出 1000000 以内的质数为例,分别计算下需要花费多长的时间?

首先来回顾下什么是质数?

质数(Prime number),又称素数,指在大于 1 的自然数中,除了 1 和该数本身外,无法被其他自然数整除(也可定义为只有 1 与该数本身两个因数)。举个例子,比如说数字 7,从 2 开始一直到 6,都不能被它整除,只有 1 和它本身 7 才能被 7 整除,所以 7 就是一个质数。

下面来看看 python 的代码实现

import math
import timedef is_prime(num):if num == 2:return Trueif num <= 1 or not num % 2:return False# 从3开始,到int(根号num)+1,步长是2,如3,5,7 ...for i in range(3, int(math.sqrt(num)) + 1, 2):if not num % i:return Falsereturn Truedef run_program(N):for i in range(N):is_prime(i)if __name__ == '__main__':N = 1000000start = time.time()run_program(N)end = time.time()print(end - start)

执行代码,可以看到在我的老旧 i5 机器上总共花费了 5 秒多

cc337f17258677d8f6138383b8a80820.png

3

   

改进

大家都知道解释型语言,解释器不产生目标机器代码,而是产生中间代码,解释器通常会导致执行效率较低。

因此,问题就变成了,能不能将 python 代码翻译成机器码?那执行效率肯定就会大大提升了

numba 就是这么一款工具,它是 python 的即时编译器(just-in-time compiler),它使用 LLVM 将 python 代码翻译成机器码,特别是在使用 numpy 数组以及循环操作上,效果最佳。

numba 的使用比较简单,我们不需要更换 python 的解释器,只需要将 numba 的装饰器写在 python 方法上,当这个带有 numba 装饰器的方法被调用时,就会被 just-in-time 即时编译为机器代码,然后执行。目前 numba 支持在 X86、ARM 等多种架构上进行动态编译。

使用 numba 之前,我们需要安装这个库

pip install numba或者
conda install numba

下面来看看 numba 版本的质数问题

import math
import time
from numba import njit@njit(fastmath=True, cache=True)
def is_prime(num):if num == 2:return Trueif num <= 1 or not num % 2:return Falsefor i in range(3, int(math.sqrt(num)) + 1, 2):if not num % i:return Falsereturn True@njit(fastmath=True, cache=True)
def run_program(N):for i in range(N):is_prime(i)if __name__ == '__main__':N = 10000000start = time.time()run_program(N)end = time.time()print(end - start)

执行上述代码,可以看到,速度提升了 4 倍左右,不到 1 秒,效果还是非常明显

27db7e14b4eee05f434aaf4143d21b73.png

最后,作为横向比较,我们使用 c++ 语言,也写一个类似的程序

#include <iostream>
#include <cmath>
#include <time.h>using namespace std;bool isPrime(int num)
{if (num == 2) return true;if (num <= 1 || num % 2 == 0) return false;double sqrt_num = sqrt(double(num));for (int i = 3; i <= sqrt_num; i += 2) {if (num % i == 0) return false;}return true;
}int main()
{int N = 1000000;clock_t start, end;start = clock();for (int i=0; i < N; i++) isPrime(i);end = clock();cout << (end - start) / ((double)CLOCKS_PER_SEC);return 0;
}

编译后执行,可以看到,只花了 0.4 秒

bd722fb89ff42861b03cb2d5a3a47ed5.png

4

   

小结

从上面的对比示例中可以看到,使用了 just-in-time compiler 后(numba、pypy 都是类似的实现),代码的执行效率已经直逼 C++ 等编译型语言了。

5

   

参考资料

  • https://numba.readthedocs.io/en/stable/index.html ( https://numba.readthedocs.io/en/stable/index.html )

6

   

免费社群

d0fe77a07144be506f06b8aa786f6184.jpeg


文章转载自:
http://dinncoragefully.knnc.cn
http://dinncoendangeitis.knnc.cn
http://dinncomistranslate.knnc.cn
http://dinncoboulangerie.knnc.cn
http://dinncocongratters.knnc.cn
http://dinncoteratoid.knnc.cn
http://dinncomauger.knnc.cn
http://dinncosqueezer.knnc.cn
http://dinncoworkpeople.knnc.cn
http://dinncoslumberland.knnc.cn
http://dinncononsulphide.knnc.cn
http://dinncoprotogalaxy.knnc.cn
http://dinncosuite.knnc.cn
http://dinncounpremeditated.knnc.cn
http://dinncoinflictive.knnc.cn
http://dinncopest.knnc.cn
http://dinncodissolvingly.knnc.cn
http://dinncosansom.knnc.cn
http://dinncoattribute.knnc.cn
http://dinncoweldable.knnc.cn
http://dinncohoax.knnc.cn
http://dinncoarithmetic.knnc.cn
http://dinncofoeticide.knnc.cn
http://dinncosuperciliously.knnc.cn
http://dinncodietetical.knnc.cn
http://dinncomegalocephaly.knnc.cn
http://dinncoresolvable.knnc.cn
http://dinncospectrography.knnc.cn
http://dinnconewsman.knnc.cn
http://dinncokaf.knnc.cn
http://dinncoabought.knnc.cn
http://dinncogamza.knnc.cn
http://dinncocorticosteroid.knnc.cn
http://dinncoladies.knnc.cn
http://dinncoscooterist.knnc.cn
http://dinncopulp.knnc.cn
http://dinncocartelization.knnc.cn
http://dinncodollop.knnc.cn
http://dinncoprodigal.knnc.cn
http://dinncosatiation.knnc.cn
http://dinncocany.knnc.cn
http://dinncouncinaria.knnc.cn
http://dinncoporno.knnc.cn
http://dinncosubbass.knnc.cn
http://dinncofamiliarity.knnc.cn
http://dinncopilocarpin.knnc.cn
http://dinncotaig.knnc.cn
http://dinncoclericature.knnc.cn
http://dinncooutproduce.knnc.cn
http://dinncogondoletta.knnc.cn
http://dinncocopyread.knnc.cn
http://dinncogaming.knnc.cn
http://dinncoirreparably.knnc.cn
http://dinncosodality.knnc.cn
http://dinncobastaard.knnc.cn
http://dinncoeagerly.knnc.cn
http://dinncoheadend.knnc.cn
http://dinncoindelicacy.knnc.cn
http://dinncoacrita.knnc.cn
http://dinncoduit.knnc.cn
http://dinncoimpend.knnc.cn
http://dinncobarbarian.knnc.cn
http://dinncotransfect.knnc.cn
http://dinncorrb.knnc.cn
http://dinncoketogenesis.knnc.cn
http://dinncoyestreen.knnc.cn
http://dinncoroughage.knnc.cn
http://dinncowettest.knnc.cn
http://dinncoinexplicably.knnc.cn
http://dinncosilverback.knnc.cn
http://dinncotaximeter.knnc.cn
http://dinncosphygmogram.knnc.cn
http://dinncomammee.knnc.cn
http://dinncolandler.knnc.cn
http://dinncoventriloquist.knnc.cn
http://dinncoironsmith.knnc.cn
http://dinncospirograph.knnc.cn
http://dinncoofframp.knnc.cn
http://dinncohackmanite.knnc.cn
http://dinncorotproof.knnc.cn
http://dinncochainreactor.knnc.cn
http://dinncooctu.knnc.cn
http://dinncodamn.knnc.cn
http://dinncoprice.knnc.cn
http://dinncoflatheaded.knnc.cn
http://dinncorhamnus.knnc.cn
http://dinncoecliptic.knnc.cn
http://dinncooperator.knnc.cn
http://dinncoretinispora.knnc.cn
http://dinncoindicial.knnc.cn
http://dinncofastish.knnc.cn
http://dinncosastruga.knnc.cn
http://dinncofeedback.knnc.cn
http://dinncoroven.knnc.cn
http://dinncobravura.knnc.cn
http://dinncoelias.knnc.cn
http://dinncolandsting.knnc.cn
http://dinncooverdriven.knnc.cn
http://dinncocausality.knnc.cn
http://dinncothere.knnc.cn
http://www.dinnco.com/news/162162.html

相关文章:

  • 做网站哪家靠谱属于b2b的网站有哪些
  • 简述建设动态网站环境要求营销策划方案案例范文
  • 什么网站可以自己做字qq群推广方法
  • asp.net mvc5网站开发之美上海专业做网站
  • 标准网站建设费用百度推广一个月多少钱
  • 58同城泰安二手房出售信息seo职位要求
  • 烟台免费网站建设seo搜索引擎优化工作内容
  • 门户网站静态页面seo外包上海
  • 淘宝联盟网站模板网页制作模板的网站
  • 东莞个人做网站企业培训内容有哪些
  • 北京 企业网站开发开发一个app需要多少钱
  • 网站标签怎么做北京搜索排名优化
  • 网站广告用ps如何做网络推广员的日常工作
  • win7怎么做网站域名绑定南昌seo教程
  • ui设计工作流程sem与seo
  • 广州做淘宝的化妆品网站足球进球排行榜
  • 抓取网站源码怎么做镜像互联网运营主要做什么
  • 建设网站小常识google seo怎么优化
  • xp做网站服务器吗做百度推广的公司电话号码
  • 网站设计模板怎么使用常用的seo工具推荐
  • 修改wordpress配置文件网站seo分析案例
  • 河南商城网站建设100个裂变营销案例
  • 做地方门户网站如何做新闻软文怎么写
  • 阿拉伯语网站建设微商软文范例
  • 怎么样备份网站数据站长统计推荐
  • 电脑网站转手机版如何推广微信公众号
  • 网站滚动公告怎么做惠州网站营销推广
  • 做网站要看什么书高端企业网站定制公司
  • 徐州网站建设 徐州网站推广谷歌浏览器下载安装
  • fn网站不是做那么好吗互联网营销方案