作家
登录

如何让Python像Julia一样快地运行

作者: 来源: 2017-05-22 13:13:15 阅读 我要评论

 range(height): 
  •  
  •             mandel_set[i,j] = mandel_numba(r1[i] + 1j*r2[j]) 
  •  
  •      return mandel_set 
  • 请留意,我将返回值更改为了一个二维整数数组。如不雅要显示结不雅,该结不雅与我们须要的结不雅更接近。

    对它计时会获得:

    1. 10000 loops, best of 3:140 µs per loop 

    我们比最初的 Python 代码快约 33 倍!Julia 在该基准测试上花费了 196 微秒,是以编译的 Python 快 40%。

    让我们来看另一个示例。诚实地讲,我不肯定要度量什么,但这是 Julia 团队应用的代码。

    1. def parse_int(t): 
    2.  
    3.     for i in range(1,t): 
    4.  
    5.         n = random.randint(0,2**32-1) 
    6.  
    7.         s = hex(n) 
    8.  
    9.         if s[-1]=='L'
    10.  
    11.             s = s[0:-1] 
    12.  
    13.         m = int(s,16) 
    14.  
    15.         assert m == n 
    16.  
    17.     return n 

    实际上,Julia 团队的代码有一条额外的指令,用于在存在末尾的 ‘L’ 时删除它。我的 Anaconda 安装须要这一行,但我的 Python 3安装不须要它,所以我删除了它。最初的代码是:

    1. def parse_int(t): 
    2.  
    3.     for i in range(1,t): 
    4.  
    5.         n = random.randint(0,2**32-1) 
    6.  
    7.         s = hex(n) 
    8.  
    9.         if s[-1]=='L'
    10.  
    11.             s = s[0:-1] 
    12.  
    13.         m = int(s,16) 
    14.  
    15.         assert m == n 
    16.  
    17.     return n 

    对修改后的代码计时会获得:

    1. 100 loops, best of 3:3.33 ms per loop 
    1. 1000 loops, best of 3:617 µs per loop 

    Cython 代码运行速度快了约 5 倍,但这还不足以弥补与 Julia 的差距。

    我对此基准测试认为困惑不解,我分析了最初的代码。以下是结不雅:

    1. Timer unit:1e-06 s 
    2.  
    3. Total time:0.013807 s 
    4.  
    5. File: 
    6.  

        推荐阅读

        云原生安全初创公司Aporeto融资1120万美元

      Aporeto是一家“云原生”的安然始创公司,旨在确保那些不受信的IT情况的安然性。该公司方才在A轮融资——也就是岁尾产品宣布之前——获得了>>>详细阅读


      本文标题:如何让Python像Julia一样快地运行

      地址:http://www.17bianji.com/lsqh/35343.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)