iOS效能優化技巧

2022-07-07 14:36:17 字數 1843 閱讀 4901

通過靜態 analyze 工具,以及執行時 profile 工具分析效能瓶頸,並進行效能優化。結合本人在開發中遇到的問題,可以從以下幾個方面進行效能優化。

一、view優化

1、不透明的view 設定為opaque。

2、根據實際情況重用、延遲載入或預載入view。

3、減少subviews數量,定製複雜cell使用drawrect。盡量使用drawrect而不是layoutsubview。

4、不直接呼叫drawrect、 layoutsubviews方法。萬不得已時可以用替代方法: setneedsdisplayinrect,layoutifneeded,替代方法也盡量不要呼叫,通過合理的**結構解決重布局問題,盡量一次完成布局。

二、uitableview優化
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 網域名稱的反向查詢。採用另外一台伺服器處理檔案。保...