Julia 和 Python,哪一个更快?( 三 )


  •  
    print(“Time = “,t.time()-start)
     
  •  
    Time = 0.001316070556640625
     
  •  
     
  •  
    import random
     
  •  
    import time as t
     
  •  
    l = 0
     
  •  
    h= 10
     
  •  
    cols = 10
     
  •  
    rows= 10
     
  •  
     
  •  
    choices = list (map(float, range(l,h)))
     
  •  
    x = [random.choices (choices , k=cols) for _ in range(rows)]
     
  •  
    y = [random.choices (choices , k=cols) for _ in range(rows)]
     
  •  
     
  •  
    result = [([0]*cols) for i in range (rows)]
     
  •  
     
  •  
    start = t.time()
     
  •  
     
  •  
    for i in range(len(x)):
     
  •  
    for j in range(len(y[0])):
     
  •  
    for k in range(len(result)):
     
  • 【Julia 和 Python,哪一个更快?】 
    result[i][j] += x[i][k] * y[k][j]
     
  •  
     
  •  
    print(result)
     
  •  
    print(“Time = “, t.time()-start)
     
  •  
     
  •  
    Time = 0.0015912055969238281
     
    1.  
      FOR_SEARCH:
       
    2.  
      Elapsed CPU time: 16.420260511 seconds
       
    3.  
      matches: 550
       
    4.  
      Elapsed CPU time: 16.140975079 seconds
       
    5.  
      matches: 550
       
    6.  
      Elapsed CPU time: 16.49639576 seconds
       
    7.  
      matches: 550
       
    8.  
       
    9.  
      IN:
       
    10.  
      Elapsed CPU time: 6.446583343 seconds
       
    11.  
      matches: 550
       
    12.  
      Elapsed CPU time: 6.216615487 seconds
       
    13.  
      matches: 550
       
    14.  
      Elapsed CPU time: 6.296716556 seconds
       
    15.  
      matches: 550
       
     
    从以上结果来看,在 Julia 中使用循环和运算符并不会产生显著的时间差异 。但是在 Python 中循环几乎比运算符 IN 多花了三倍的时间 。有趣的是,在这两种情况下,Julia 都比 Python 快得多 。
    线性回归
    下一个实验是测试机器学习算法 。我们选择了以一种最常见和最简单的机器学习算法,使用简单数据集的线性回归 。我们使用了一个包含 237 条数据的数据集 “Head Brain”,数据集的两列分别为 “HeadSize” 和 “BrainWeight” 。接下来,我们使用 “head size” 数据去计算 “brain weight” 。在 Python 和 Julia 中我们都没有使用第三方库,而是从零实现了线性回归算法 。
    Julia:
     
    1.  
      GC.gc()
       
    2.  
      @CPUtime begin
       
    3.  
      linear_reg()
       
    4.  
      end
       


      推荐阅读