2012-12-23 33 views
0

我有兩個列表:如何使這些嵌套的for-loop更高效?

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

我的代碼在本質上是非常連續的,我想優化它:

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

但是,由於for循環,它似乎非常低效。我能做些什麼來使它更有效地運行?

回答

0
  1. 難道看起來效率不高嗎?或者您運行它並花了太長時間?如果你認爲它沒有效率 - 測試它。並且不要優化不存在的問題。你可以更有效地利用你的時間。

其他任何情況都會依情況而定。例如:

  1. 如果您在ActiveExta上搜索ActiveStack中的每個元素的一個或兩個項目,請使ActiveStack成爲一個散列。
  2. 如果您有if語句,並且語句僅依賴於一個變量,則使其成爲外部語句。這樣你可以優化brach預測。這可以由編譯器自動完成。
  3. 如果你想操作/讀取所有對 - 你不能優化它。
+0

是的,我運行它,但它需要大約200秒來運行5組數據。我擔心的是,如果它達到100臺,它將需要1000秒。 –

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倍,在性能上的差異。