記錄Qt的一個詭異Bug

來源:互聯網
上載者:User

標籤:

  公司的一款項目,在反覆式開發法階段,突然發現運行速度越來越慢,介面切換卡頓時間在2秒以上.經過和某個不卡版本的對比,驚奇的發現程式二進位都一模一樣,就幾個圖片資源和指令碼不一樣.經過差不多一天的排查,發現是新加的splash程式影響了主程式的速度-.-

  因為主程式設計的原因,啟動大概需要10秒左右,為了不在黑的X介面等太久,為了介面的友好,我們獨立做了個splash程式,用於在主程式啟動之前顯示友好提示介面,splash程式的生命週期是20秒,之後將自己退出.然而奇怪的是就是這個splash程式,即時在完全退出之後,主程式的響應速度也會慢上很多,切換介面需要卡頓2秒以上...,百思不得其解,對於作業系統而言,進程是互相獨立的,而兩個程式又沒有資源上的存取違規,即時splash程式寫的再爛,在退出之後系統也會回收相應的資源,理論上不會對主程式造成任何影響.

  經過組內討論和思考後,我把問題定位在Qt庫的問題,公司之前一直使用的是Qt4.6.3版本的庫(為什麼用這個版本的庫也是有曆史原因的),為了驗證想法,我先用SDL寫了個替代的splash程式測試,發現果然主程式就恢複正常了,然後再編譯了個4.8.4版本的庫替換進去,果然用原來的splash也不卡了,主程式的響應速度也比4.6.3快了一大截-.-

  果然是Qt庫本身的bug,這也就解釋了為什麼獨立的兩個進程會互相影響.為什麼用Qt4.6.3這個映像運算沒MMX最佳化的老版本也是因為之前踩過高版本的一個坑.我們有幾款系統只有一個螢幕,需要主程式和FLASH之間不斷切換,結果Qt4.7以上的版本在切換的過程中,有幾率出現白屏的現象,但是進程還是在運行.之前也是排查了很久才發現是Qt庫的問題,我猜測是幾個程式對OpenGL的調用導致顯卡資源鎖住了.沒辦法才把Qt版本退回到了4.6.3(這個版本不會白屏,但是圖形效率奇低,甚至連防抖處理都沒,美工做的圖片毛邊明顯).

  最終決定這款產品上最新的4.8.7,因為這款產品不需要單屏切換,只是不知道之前的白屏問題修複沒有.

記錄Qt的一個詭異Bug

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.