iOS效能小結

2021-07-04 10:30:52 字數 2200 閱讀 7033

最簡單的工具就是 nsdate,但精度不是太好。

nsdate* tmpstartdata = [[nsdate date] retain]; 

//you code here... 

double deltatime = [[nsdate date] timeintervalsincedate:tmpstartdata]; 

nslog(@">>>>>>>>>>cost time = %f", deltatime); 

#import // for mach_absolute_time() and friends   

cgfloat bnrtimeblock (void (^block)(void))   

2,善用效能分析工具。xcode 自帶了很多強大的分析工具,包括靜態 analyze 工具,以及執行時 profile 工具。

3,關於

優先使用[uiimage imagenamed:@""];

盡量不要使用全屏大小的背景;使用 gradient 來取代硬編碼的 gradient;gradient 應當盡可能窄,然後將之拉伸運用到實際場合中去。

4,對於結構複雜的 view,使用 drawrect 自繪而不是從 nib 中載入。

5,對於 tableview,重用 cell;減少 cell 初始化的工作量,延遲裝載;定製複雜 cell 時,使用 drawrect 自繪;cache 盡可能多的東西,包括 cell 高度;盡可能讓 cell 不透明;避免使用影象特性,比如 gradients。

7,將一些不太重要的任務放在 idle 時執行。

- (void)idlenotificationmethod  

- (void)registerforidlenotification  

10,關於後台任務系統進入 background 之後,一般只有10分鐘的執行時間,因此有很多值得注意的事項:

b) 釋放所有的共享資源,比如 calendar 與 address book。當應用程式進入後台時,如果它還在使用或沒有釋放共享資源,ios會立即kill掉該應用程式。

d) 不要更新ui或者執行大量消耗cpu或電池的**。進入後台之後,不應該執行不必要的任務,不要執行 opengl es 呼叫,應取消 bonjour 相關的服務,正確處理網路鏈結失敗,避免更新 ui,清除所有的警告或其他彈出對話方塊。

e) 保證後台**的執行工作正常,注意處理異常。

11,如果關鍵**使用 c/c++/asm 效率更高就使用 c/c++/asm。

12,如果乙個方法在乙個迴圈次數非常多的迴圈中使用,在進入迴圈前使用 methodforselector 獲取該方法 imp,然後在迴圈體中直接使用該 imp。

13,關於記憶體釋放

在 didreceivememorywarning 中釋放記憶體,比如cache 的影象,view 等,並記得呼叫 [supper didreceivememorywarning]。清理函式 didreceivememorywarning, viewdidunload 和 dealloc 都是在方法結尾處呼叫 supper 的方法。

避免使用靜態初始化,包括靜態c++物件,載入時會執行的**,如+(void) load{} ,會造成在main函式之前執行額外的**。

16,利用 cache 空間換時間。cache 是一種常見的空間換時間的提供效能的收到,可以用在相當多的場合。

盡量 cache 那些可重複利用的物件,比如 table cell,date/number formatters,正規表示式,sqlite語句等。

17,關於資料庫

快取經常用到的 sqlite 語句;優化資料庫查詢語句,用sqlite3_trace和sqlite3_profile來查詢效能差的語句;如果可能的話,快取查詢結果緩。

在使用 sqlite_prepare會將sql查詢編譯成位元組碼,要使用bind,重用那些已經prepared的語句。

ios 記憶體小結

這是 看 書籍 objective c 高階程式設計 ios與os x多執行緒和記憶體管理 一書的隨記。除錯 1.檢視 autoreleasepool 池裡面的物件 extern void objc autoreleasepoolprint objc autoreleasepoolprint 上面的...

效能優化 iOS

如果需要更詳細的資訊,那就將dyld print statistics details設定為1 2.1關於dyld 用machoview 檢視載入過程如上圖 備註1 如果設定了 dyld print libraries,或者選中run diagnostics 下面的 dynamic library ...

apach ab效能測試小結

ab的原理 ab是apachebench命令的縮寫。ab的原理 ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一url位址進行訪問。它的測試目標是基於url的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx lighthttp tomcat iis等其它web伺服器的壓...