天天看點

利用函數重載編寫函數max_python内置max、min函數與Numpy自帶的max、min函數性能對比分析...

本文首發位址:

https://yishuihancheng.blog.csdn.net/article/details/88408961

歡迎關注我的部落格【Together_CZ】,我是沂水寒城!

利用函數重載編寫函數max_python内置max、min函數與Numpy自帶的max、min函數性能對比分析...

今天在使用max函數來擷取清單最大資料的時候在想,是python内建的函數性能更好呢?還是Numpy提供的函數性能更好呢?抱着好奇的心理,簡單進行了一組對比實驗來粗略觀察一下。具體實踐如下:

# !/usr/bin/env python# -*- coding:utf-8 -*-  '''__Author__:沂水寒城功能: 比較python内置的max()和min()方法與numpy提供的max()和min()方法性能差異''' import timeimport randomimport numpy as np  def generateRandomNums(num=1000): ''' 生成指定數量的随機數 ''' res_list=[] for i in range(num): res_list.append(random.randint(0,999999999)) return res_list  def compareTime(res_list): ''' 時間效率對比分析 ''' T1=time.time() max_num=max(res_list) min_num=min(res_list) T2=time.time() max_num2=np.max(res_list) min_num2=np.min(res_list) T3=time.time() print '================================' print 'max_num: ',max_num print 'min_num: ',min_num print 'time_consume: ',T2-T1 print '================================' print 'max_num2: ',max_num2 print 'min_num2: ',min_num2 print 'time_consume: ',T3-T2 if __name__=='__main__': res_list=generateRandomNums(num=100000000) compareTime(res_list)
           

測試結果輸出如下:

num=100000================================max_num: 999993486min_num: 7104time_consume: 0.00399994850159================================max_num2: 999993486min_num2: 7104time_consume: 0.0169999599457 num=1000000================================max_num: 999998527min_num: 199time_consume: 0.0320000648499================================max_num2: 999998527min_num2: 199time_consume: 0.0729999542236 num=10000000================================max_num: 999999865min_num: 25time_consume: 0.313999891281================================max_num2: 999999865min_num2: 25time_consume: 0.733999967575
           

我們上面一共進行了三組實驗,分别是:10萬、100萬、1000萬數量級的,實驗結果顯示:python内建的函數性能均略優于Numpy提供的函數性能,感興趣的可以提升一下資料量再進行實驗觀察結果,應該也是同樣的趨勢。