我想知道什麼是正確的方式去檢查對象的分配(或其他事情)。我自己做了一些性能測試,發現在沒有方法調用的情況下進行檢查可以節省「大量」時間。哪種方式被認爲是良好的編碼?下面的測試和結果。#define vs self.method檢查分配
的定義:
#define checkUM if (!um) {um = [[UtilityMaster alloc]init]; }
VS的方法:用於檢查
-(void) checkUtility {
if (!um) {um = [[UtilityMaster alloc]init]; }
}
代碼:
int imax = 1000000000;
int i = 0;
IFD100(@"check method")
while (i <= imax) {
[self checkUtility];
i++;
}
IFD100(@"check method end")
i = 0;
IFD100(@"check define")
while (i <= imax) {
checkUM;
i++;
}
IFD100(@"check define end")
校驗1:
2013-06-25 18:36:16.712 check method
2013-06-25 18:36:27.669 check method end <-- 10.957 secs
2013-06-25 18:36:27.670 check define
2013-06-25 18:36:30.128 check define end <-- 2.458 secs
檢查2:
2013-06-25 18:37:18.900 check method
2013-06-25 18:37:28.678 check method end <-- 9.778 secs
2013-06-25 18:37:28.679 check define
2013-06-25 18:37:31.136 check define end <-- 2.457 secs
時差是宏不做的10億次方法調用。 – rmaddy
順便說一句 - 你的日誌語句是顛倒過來的。您記錄「檢查定義」,然後測試方法調用。 – rmaddy
是的,我喜歡這個逆轉太haha – mrosales