ソースコードベースを広範にプロファイリングした結果、いくつかの巨大なリストをループしている間にすべてのパフォーマンスの問題が発生することがわかりました。次のような問題を引き起こしているさまざまなシナリオでループを反復処理する最速の方法
コード通路を識別することができます
#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
の専門家は、私たちの素晴らしいパフォーマンスの向上につながる4ワンライナーを書き留めることができることをかなり確信しています応用。しかし、私が気付いていないnumpy
よりも、おそらくループ処理の方が良い方法かもしれません。
トピックに関するご意見をお待ちしております。
これらはすべてリストに対応しています。なぜ愚痴な質問ですか?配列の場合は、より高速なコンパイル済み操作を提案するかもしれません。しかし、そのためには、形状やdtypeのようなものを知る必要があります。 – hpaulj
こんにちは。すべてのリスト要素のデータ型は常にfloatであり、リストはフラットです(リストのリストはありません)。 – Rickson
numpyコンテキストの詳細については、http://stackoverflow.com/q/42356625を参照してください。 – hpaulj