2016-01-29 45 views
1

我已經爲項目的資源文件添加了一些圖標,並且突然對QML代碼進行的每個微小更改都會在項目運行之前等待7到8秒的時間,幾乎感覺它是重新編譯C++代碼,但實際上這是qrc文件「編譯」的延遲。將資源添加到QML項目會導致編譯速度非常慢

我試圖禁用qrc壓縮,希望它會變得更快,但它沒有任何影響。考慮到我正在使用具有快速CPU和SSD的高端系統 - 這種額外的資源只有2兆字節,爲什麼這麼長時間,這是非常奇怪和令人討厭的事情。將相同的文件添加到高壓縮檔案大約需要5毫秒。

回答

6

好的,仍然不知道它爲什麼這麼慢,但我找到了一種避免它的方法。

問題是,對於QML源代碼的每一個細微變化,整個資源文件都被重新編譯了。因此,我將所有圖像移動到另一個資源文件,無需做其他任何事情,無需更改路徑或任何內容,現在QML代碼位於不同的資源文件中,並且具有圖像的代碼不再在每次更改時重新編譯,所以該項目即時啓動。

+0

我遇到了同樣的問題,這讓我發瘋。我改變了我的項目,以便在開發時直接從文件系統讀取.qml文件,並且只使用qrc編譯版本進行發佈構建。但我喜歡你的想法,即將圖像(不經常更改)從QML文件分離成兩個獨立的資源包。我爲什麼沒有想到這一點! – ScottG

0

Qt的資源系統將創建一個.cpp文件,該文件將包含一個C++數組的壓縮二進制數據,這些數據包含2MB圖像和一個qml文本文件,qrc必須重新生成一個相當大的文件這也需要時間來編譯。

更多信息here

+1

相當大?大約2 MB更精確。這幾乎沒有。正如我已經提到的,我禁用了壓縮,所以它只是將所有資源文件作爲原始字節數組序列化爲一個二進制文件。這當然不能解釋爲什麼它如此緩慢。在使用4.3 Ghz iyv網橋CPU,32 gm RAM和500+ mb/sec ssd的系統上需要8秒鐘的時間,這在代碼效率方面已經有了一些記錄。 – dtech