我聽說pipenv9.0.2已經發布,啟動時間有了很大的改進。
我很快就試了一下,但我覺得並不快。所以我用python3.7的新特性來研究它。
在本文中,我將介紹該特性以及如何使用它。
啟動時間≒匯入時間
例如,pipenv -h 的執行時間比顯示幫助訊息的時間長得多。
一般來說,當應用程式啟動時,會有一些啟動過程,比如載入環境變數或配置檔案。
對於python應用程式,匯入模組占用了大部分啟動時間。例如,pipenv --version 花費了大約800ms,而import pipenv 花費了700ms。
顯示模組的匯入時間
python 3.7有新的特性來顯示匯入模組的時間。
這個特性是通過 -x importtime 選項或 pythonprofileimporttim 環境變數來啟用的。
或這裡是乙個pipenv --version輸出結果的例子 。
研究匯入時間
在輸出的最後面,你會看到這些行:
在最後一行,579479表示 import pipenv 需要579479us。
在匯入pipenv的同時,還匯入了許多其他模組。從上面的示例中,您可以看到 pipenv 匯入了pipenv.cli。子匯入以2個空格縮排。
再看最後一行。507表示執行pipenv模組時只需要507us。579479-507=578972us用於子匯入。
找出緩慢的部分
我們來從輸出中找到緩慢子樹。我選取了幾行。
如您所見,匯入pkg_resources 很緩慢。
但令人驚訝的是,pkg_resources沒有進行縮排;它不是pipenv的子匯入。
這意味著pkg_resources是由pipenv指令碼而不是模組匯入的。
壞訊息: 匯入pkg_resources很慢。這是乙個已知的問題,在不破壞向後相容性的情況下很難修復。
好訊息: 您可以避免匯入pkg_resources!
在安裝了wheel之後,pip會對它進行構建並從構建包進行安裝。
從wheel (.whl)和原始碼包(.tar.gz)安裝是不同的過程。
從wheel安裝時,指令碼中不使用pkg_resources:
看下面的部分.
pipenv匯入dotenv, dotenv再匯入 dotenv.ipython,它再匯入ipython。
這就是為什麼pipenv在我的環境中開始很慢; 我已經安裝了ipython。
但是為什麼要匯入ipython呢?我閱讀了dotenv原始碼,發現它是用於ipython擴充套件的。
當然,pipenv和許多dotenv使用者並不使用ipython擴充套件。
我向dotenv提交了乙個推送請求,建議dotenv根據需要匯入ipython。
由於pipenv有自己的dotenv副本,所以我向pipenv提交了完全刪除dotenv.ipython的推送請求。
結論
我可以將 pipenv--version 的時間從800ms減少到500ms。
匯入時間分析是研究和優化應用程式啟動時間的好方法。
加快Flex應用啟動速度的5種方式
原文 http www.infoq.com cn news 2008 05 flex startup time jun heider在o reilly的insideria站點上發表了一篇精彩的文章,該文章就 如何加快flex應用的啟動速度提出了很多建議,以幫助使用者減少看見討厭的 loading 對...
加快Flex應用啟動速度的5種方式
作者jon rose譯者張龍 jun heider在o reilly的insideria站點上發表了一篇精彩的文章,該文章就如何加快flex應用的啟動速度提出了很多建議,以幫助使用者減少看見討厭的 loading 對話方塊的出現時間。他深入 了問題的不同方面,並對每種技術的優勢和劣勢進行了評判。從外...
怎樣加快Tomcat的啟動速度
第二要刪除的是logs資料夾下的日誌檔案,時間一久這裡檔案會很多很大,既然不需要了就刪掉它吧。第三是work資料夾下的catalina資料夾,把這個資料夾跟它裡面的所有檔案都刪掉,tomcat容器把每個工程進行編譯,將編譯後的檔案放在這裡,有時候也許會遇到修改了 重啟了tomcat,但是更改仍沒應用...