作家
登录

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

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

 range(1,1000): 
  •  
  •             ni = n[i] 
  •  
  •             s = hex(ni) 
  •  
  •         m = int(s,16) 
  •  
  •         assert m == ni 
    1. from numba import jit 

    它的应用异常简单。我们仅须要向想要编译的函数添加一点润饰。我们的代码变成了:

    1. @jit 
    2.  
    3. def fib_seq_numba(n): 
    4.  
    5.     if n < 2: 
    6.  
    7.         return n 
    8.  
    9.     (a,b) = (1,0) 
    10.  
    11.     for i in range(n-1): 
    12.  
    13.         (a,b) = (a+b,a) 
    14.  
    15.     return a 

    对它计时会获得:

    向量化

    1. 1000000 loops, best of 3:225 ns per loop 

    “我们在 97% 的时光应当忘记较小的效力:不成熟的优化是万恶之源。”

    比无类型的 Cython 代码更快,比最初的 Python 代码快约 16,000 倍!

    应用 Numpy

    我们如今来看看第二项基准测试。它是快速排序算法的实现。Julia 团队应用了以下 Python 代码:

    1. def qsort_kernel(a, lo, hi): 
    2.  
    3.     i = lo 
    4.  
    5.     j = hi 
    6.  
    7.     while i < hi: 
    8.  
    9.         pivot = a[(lo+hi) // 2] 
    10.  
    11.         while i <= j: 
    12.  
    13.             while a[i] < pivot: 
    14.  
    15.                 i += 1 
    16.  
    17.             while a[j] > pivot: 
    18.  
    19.                 j -= 1 
    20.  
    21.             if i <= j: 
    22.  
    23.                 a[i], a[j] = a[j], a[i] 
    24.  
    25.                 i += 1 
    26.  
    27.                 j -= 1 
    28.  
    29.         if lo < j: 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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