我做了一個Python模塊(swood
),直到最近,它是一個包含許多類的大文件。將相關類重構爲單獨的文件後,所有內容仍然有效,儘管速度降低了大約50%。我認爲,如果有的話,它會快一點,因爲Python可以更有效地緩存每個文件的字節碼,從而縮短啓動時間。爲什麼將我的模塊分成多個文件會讓它變慢?
我正在使用CPython運行此代碼(尚未用PyPy等測試)。我在舊版本和重構版本上運行line_profiler
,並且在重構之前和之後花在每行上的處理時間百分比大致相同。
這裏有一些關於我的計劃一些事情,可能有一些用它做:
- 這讓很多小班像
Note
和實例,這些可能是昂貴的,雖然這不是之前的問題重構。 - 製作這些類時,它從一個單獨的文件中獲取它,它在開頭處就是
import
。 - 有在需要最長的部分(scaling和mixing音頻)
- 發生了很多
numpy
基於陣列操縱我有我的筆記縮放存儲,如果他們在使用三次以上的高速緩存7.5秒。 (code)
什麼導致我的代碼在沒有做任何事情之後變慢,而是將它分離成多個文件?
你可能在某個時候搞砸。將你的代碼分成更多的模塊會導致它加載所有模塊需要一些時間,但是這種下降會比你報告的要低得多。沒有任何東西突然跳出來,顯得很慢,但我確實看到了一些奇怪的東西(比如'__hash__'沒有'__eq__'),表明你的代碼可能不是沒有bug的。 – user2357112