python 一些方法的时间测试
嘗試一些方法的不同實(shí)現(xiàn),比較一下時(shí)間,電腦比較渣,不過只是做個(gè)比較
雖然用python主要是方便,肯定是不快的,不過能快一點(diǎn)還是快一點(diǎn)好
?
numpy中大量使用同樣 shape 的全 0 array,可以使用 np.zero() 方法或者是先開一個(gè)之后 copy:
1 %%time 2 for i in range(5000000): 3 a = np.zeros((100,10)) 4 a = np.zeros((100,10)) 5 a = np.zeros((100,10)) Wall time: 17.1 s 1 %%time 2 b = np.zeros((100,10)) 3 for i in range(5000000): 4 a = b.copy() 5 a = b.copy() 6 a = b.copy() Wall time: 15.1 s貌似先開一個(gè),之后copy比較快,不過差異不明顯
?
range() 還是 np.arrange(),最近用 array 有點(diǎn)多,經(jīng)常啥都開 array
1 %%time 2 for p in range(50000): 3 a = np.arange(100000) Wall time: 3.72 s %%time for p in range(50000):a = range(100000) Wall time: 31 ms差距還是非常明顯(不用想都知道2333),如果不需要用 array 方法的時(shí)候,還是 list 好了
?
訪問 list 等下標(biāo),用 range(長(zhǎng)度),不過先保存長(zhǎng)度成常量還是多次用 len 方法
1 %%time 2 a = np.arange(100000) 3 l = len(a) 4 for p in range(50000000): 5 range(l) Wall time: 23.3 s 1 %%time 2 a = np.arange(100000) 3 for p in range(50000000): 4 range(len(a)) Wall time: 27.9 s就這樣看,應(yīng)該調(diào)用 len 方法還是有點(diǎn)慢的,雖然差異也不是非常大,len 應(yīng)該不是 O(n) 實(shí)現(xiàn),可能是對(duì)象直接保存的一個(gè)屬性,不過訪問起來還是先存下來更快點(diǎn)
?
遍歷一個(gè) array ,同時(shí)使用標(biāo)號(hào)
我會(huì)遍歷下標(biāo)長(zhǎng)度的一個(gè) list 來遍歷它,用 zip 把標(biāo)號(hào)和 array 合并,或者 emunerate ,或者干脆維護(hù)一個(gè) id,循環(huán)中累加
1 %%time 2 for i in range(5000000): 3 a = np.arange(10,30) 4 l = len(a) 5 for id in range(l): 6 x = id+a[id] Wall time: 50 s 1 %%time 2 for i in range(5000000): 3 a = np.arange(10,30) 4 b = zip(range(len(a)),a) 5 for item1,item2 in b: 6 x = item1+item2 Wall time: 51.2 s 1 %%time 2 for i in range(5000000): 3 a = np.arange(10,30) 4 c = enumerate(a) 5 for item1,item2 in c: 6 x = item1+item2 Wall time: 52.3 s 1 %%time 2 for i in range(5000000): 3 a = np.arange(10,30) 4 d = zip(np.arange(len(a)),a) 5 for item1,item2 in d: 6 x = item1+item2 Wall time: 52.9 s 1 %%time 2 for i in range(5000000): 3 a = np.arange(10,30) 4 id = 0 5 for item in a: 6 x = id+item 7 id += 1 Wall time: 1min 1s看上去只有維護(hù) id 累加最慢,其他都差別不太大,那只要條件允許大概還是按 C 的習(xí)慣開一個(gè)下標(biāo)的 list 來遍歷下標(biāo)好了
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/cenariusxz/p/8860508.html
總結(jié)
以上是生活随笔為你收集整理的python 一些方法的时间测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC中修改程序图标
- 下一篇: python-psutil