簡単に言えば。より良いもの:
イテレータを指定すると、次のようになります。CSV を読み取った後、または DB からクエリ結果を取得した後。パフォーマンスを向上させるものとその理由は何ですか?
最初のアプローチ: イテレータを使用して反復し、必要なリストに追加します。何かのようなもの:
element1_list=[]
element2_list=[]
for row in rows:
element1_list.append(row[element1_index])
element2_list.append(row[element2_index])
2 番目のアプローチ: イテレータをリストに変換し、事前割り当て後に要素にアクセスする
row_list=list(rows)
length=len(row_list)
element1_list=[None]*length
element2_list=[None]*length
for i in range(0,length):
element1_list[i]=row_list[i][element1_index]
element2_list[i]=row_list[i][element2_index]
事前割り当てには独自の利点があります。しかし、リストへの変換自体が反復そのものである可能性があります。では、どのようなアプローチを選択し、その理由は? ボンネットの下で何が起こっているかを知るのは興味深いでしょうか?
EDIT : 繰り返しますが、これらのアプローチの根本的な違いについて知りたいと思います。単にtimeitを使用して実証分析を行うのではなく、理論を裏付けるために行いたいのであって、その逆ではありません
いくつかのパフォーマンス基準は次のとおりです。
- 速度と CPU 時間
- メモリー