在對我們的源代碼庫進行了大量分析後,我們發現所有性能問題都是在循環遍歷一些巨大的列表時產生的。在各種情況下循環遍歷循環的最快方法
這是造成問題的代碼通道可作如下認定:
#ISSUE 1
myList = [i for j, i in enumerate(myList) if j not in anotherList]
#ISSUE 2
TargetIndex = next((myList.index(n) for n in myList if n > someBoundary), len(myList))
#ISSUE 3
def myFunction():
for i in myList:
if abs(i) > someLimit:
return 0
return 1
#ISSUE 4
for n,i in enumerate(myList):
if abs(i) < someLimit:
myList[n] = 0
我敢肯定,一些numpy
專家們可以寫下四個一襯墊會導致很大的性能提升我們的應用。但是對於那些循環操作來說,或許還有更好的方法,我不知道它們是numpy
。
關於這個主題的任何建議,非常感謝。
這些都是在列表上工作。爲什麼這個問題不成問題?如果他們是數組我們可能會建議更快的編譯操作。但爲此,我們需要知道形狀和dtype之類的東西。 – hpaulj
嗨。所有列表元素的數據類型始終爲float,並且列表是平坦的(沒有列表)。 – Rickson
欲瞭解更多的numpy上下文http://stackoverflow.com/q/42356625 – hpaulj