2010-03-16 45 views
-1

假設我要通過運行一個腳本在列表中保存100個浮點數,很可能需要一些內存來處理。因此,如果此代碼每次都作爲應用程序的需求執行,那麼將是性能命中,所以我的問題是如何保持效率,以獲得性能。Python |效率和性能

實物模型代碼:

def generate_lglt(): 
    float1, float2 = 27.2423423, 12.2323245 
    lonlats = [] 
    for val in range(100, 0, -1): 
     lonlats.append(random.uniform(float1, float2)) 
     lonlats.append(random.uniform(float1, float2)) 
     lonlats.append(random.uniform(float1, float2)) 
     lonlats.append(random.uniform(float1, float2)) 
     lonlats.append(random.uniform(float1, float2)) 
    print lonlats 

感謝。

+4

100浮動並不是那麼多。 – voyager 2010-03-16 19:22:46

+2

這個問題太過於簡化,遠離任何實際可回答的問題。 – 2010-03-16 19:32:15

+2

你永遠不會使用val,所以我不明白爲什麼它會倒退。一個更正常的拼寫方法是'xrange(100)'中的val。 – 2010-03-16 19:56:09

回答

2

如果generate_lglt()將被稱爲很多不同的時間,你可能需要從代碼的每次呼叫再生相同的範圍(100,0,-1)保持。您可能需要將生成的範圍緩存到某處並反覆使用。另外,如果您要退出for循環而未完成每次迭代,請使用xrange而不是range。

9

瓶頸出現在意想不到的地方,所以從未優化代碼,只是因爲你認爲這可能是正確的代碼,以盡力改善。你需要做的是

  1. 編寫你的程序,讓它完全運行。
  2. 開發測試以確保您的程序是正確的。
  3. 決定你的程序是否太慢。
    • 這一步很有可能會退出。
  4. 開發現實運行程序的性能測試。
  5. 使用cProfile模塊在其實際性能測試中對代碼進行剖析。
  6. 找出哪些算法改進可以提高代碼的性能。
    • 這通常是提高速度最多的方法。
  7. 如果您正在使用這項工作的最好的算法,進行微優化。
    • 重寫在C(可能使用用Cython)關鍵部分往往比的Python微優化更有效。