如何使用 Python 讓迴圈跑得更快?


這是一個與語言無關的問題。幾乎每種語言中都有迴圈,並且相同的原則普遍適用。你需要意識到,在迴圈最佳化方面,編譯器會完成大部分繁重的工作,但作為一名程式設計師,你也需要使迴圈得到最佳化。

認識到每次迴圈迭代都會執行放入迴圈中的所有內容非常重要。最佳化迴圈的關鍵是將它們所做的內容最小化。即使表面上看起來非常快速的運算,如果重複多次,也會花費很長時間。執行一次需要 1 微秒的運算,一百萬次將花費 1 秒才能完成。

不要在迴圈中或甚至在迴圈的起始條件中執行類似 len(list) 之類的內容。

示例

a = [i for i in range(1000000)]
length = len(a)
for i in a:
   print(i - length)

比以下迴圈快得多

a = [i for i in range(1000000)]
for i in a:
   print(i - len(a))

你還可以使用諸如迴圈展開 (https://en.wikipedia.org/wiki/Loop_unrolling) 的技術,這是一種迴圈轉換技術,試圖以犧牲二進位制大小為代價最佳化程式的執行速度,這種方法稱為空間時間權衡。

使用諸如 map、filter 等函式來替代明確的 for 迴圈,也可以提供一些效能提升。

更新日期:2020 年 3 月 5 日

890 次瀏覽

開啟您的 職業

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.