0

私は2つのリストを持っています:

  1. ActiveExchange = []
  2. ActiveStock = []

私のコードは本質的に非常にシーケンシャルであり、最適化しようとしています。

for exchange in ActiveExchange:
    for stock in Activestock:
        ...
        ...
        ...

ただし、forループのために非常に非効率的であるように思われます。より効率的に実行するにはどうすればよいですか?

4

2 に答える 2

0
  1. それは単に非効率に見えるのですか、それとも実行して時間がかかりすぎたのですか?効率が悪いと思う場合は、テストしてください。そして、存在しない問題をアップティム化しないでください。あなたはあなたの時間をより効率的に使うことができます。

それ以外は大文字と小文字が区別されます。好き:

  1. ActiveExchangeのすべての要素についてActiveStackで1つまたは2つのアイテムを検索する場合は、ActiveStackをハッシュにします。
  2. ifステートメントがあり、ステートメントが1つの変数のみに依存している場合は、それを外側の変数にします。そうすれば、ブランチ予測を最適化できます。これは、コンパイラによって自動的に実行される場合があります。
  3. すべてのペアを操作/読み取りたい場合、最適化することはできません。
于 2012-12-23T08:00:16.660 に答える
0

C / C ++とPythonには、行優先の配列があります。配列、リスト、ベクトルなどをステップスルーする場合は、必ず次のようにしてください。

for i in range(25):
  for j in range(25):
    A[j][i] *= 1

それよりも:

for i in range(25):
  for j in range(25):
    A[i][j] *= 1

これにより、パフォーマンスに3〜6倍の違いが生じる可能性があります。

于 2013-11-03T03:25:45.393 に答える