通過靜態 analyze 工具,以及執行時 profile 工具分析效能瓶頸,並進行效能優化。結合本人在開發中遇到的問題,可以從以下幾個方面進行效能優化。
一、view優化
1、不透明的view 設定為opaque。二、uitableview優化2、根據實際情況重用、延遲載入或預載入view。
3、減少subviews數量,定製複雜cell使用drawrect。盡量使用drawrect而不是layoutsubview。
4、不直接呼叫drawrect、 layoutsubviews方法。萬不得已時可以用替代方法: setneedsdisplayinrect,layoutifneeded,替代方法也盡量不要呼叫,通過合理的**結構解決重布局問題,盡量一次完成布局。
1、正確使用『reuseidentifier』重用cell。三、快取優化2、盡量使所有的view opaque。
3、減少subviews數量,定製複雜cell使用drawrect。
4、盡量不呼叫『cellforrowatindexpath』。呼叫cellforrowatindexpath會導致cell快取失效
5、cache盡可能多的東西,包括行高。
1、快取不大可能改變但是需要經常讀取的東西。遠端伺服器的響應、、計算結果。四、執行緒優化2、重用大開銷物件。對於初始化很慢的物件通過新增屬性的方式保持該物件,保證只被初始化一次,多次復用。如nsdataformatter。
3、方法指標快取。如果乙個方法在乙個迴圈次數非常多的迴圈中使用,在進入迴圈前使用methodforselector獲取該方法的imp,在迴圈體中直接呼叫該imp。
1、 耗時操作使用子執行緒進行,或者放入任務佇列中。2、同步使用序列佇列代替同步鎖。
3、不重要的任務放在idle中執行
- (void)idlenotificationmethod
- (void)registerforidlenotification
五、記憶體優化使用autorelease pool 降低記憶體峰值六、**細節優化
1、不在viewwillapear中進行費時操作七、優化2、如果關鍵**用c/c++效率更高就使用c/c++
對資料進行decode。在子執行緒中設定image的大小後,在imageview中使用縮放後的image。原因:由於uiimage的imagewithdata函式是每次畫圖的時候才將data解壓成argb的影象,所以在每次畫圖的時候,會有乙個解壓操作,uiimage初始化後僅僅是把載入到記憶體中,而實際的解碼和重取樣是在需要顯示時才進行。
//重取樣,在子執行緒中進行
cgsize itemsize = cgsizemake(width, height);//實際要縮放的大小
uigraphicsbeginimagecontext(itemsize);
cgrect imagerect = cgrectmake(0.0, 0.0, itemsize.width, itemsize.height);
[image drawinrect:imagerect];
uiimage newimage = uigraphicsgetimagefromcurrentimagecontext(); //重取樣後的
uigraphicsendimagecontext();
效能優化 iOS
如果需要更詳細的資訊,那就將dyld print statistics details設定為1 2.1關於dyld 用machoview 檢視載入過程如上圖 備註1 如果設定了 dyld print libraries,或者選中run diagnostics 下面的 dynamic library ...
Oracle SQL 效能優化技巧
sun2004發表於 2008 12 25 11 28 眾所周知,資料庫設計的好壞直接關係到資料庫執行的效率。根據筆者的經驗,對於提公升資料庫效能來說,合理的資料庫設計,比公升級伺服器的硬體配置,還要來的有效。但是,筆者無論是在跟同事合作,又或者是在論壇上跟相關同行交流的時候,總是會發現有些人有一些...
Apache效能優化技巧
本文出自 本文簡要介紹了幾個優化 apache 的技巧,在實戰中十分有用。公升級 apache 到最新版本,新版本往往包含效能提公升和安全更新。在 httpd.conf 中設定 hostnamelookups off 能避免針對每個訪問者的 dns 網域名稱的反向查詢。採用另外一台伺服器處理檔案。保...