有以下兩種情況之間的速度差:NSUserDefaults的性能比較
答:
userName=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
userEmail=[[NSUserDefaults standardUserDefaults] objectForKey:@"userEmail"];
userId=[[[NSUserDefaults standardUserDefaults] objectForKey:@"userId"] intValue];
B:
userDictionary=[[NSUserDefaults standardUserDefaults] objectForKey:@"userDictionary"];
userName=[userDictionary objectForKey:@"name"];
userEmail=...etc...
即使在速度上的差異可能非常小,技術上,有沒有性能差異?
你的性能測試表明瞭什麼? (答案是,順便說一句,通常是肯定的,但是沒有這樣的要求,編譯器可以在合法的情況下優化它,只有測試會告訴你不同。) – 2012-04-06 18:23:45
如何運行性能測試? (另外,我想知道「爲什麼」而不是僅僅是或否,我不能回答) – Snowman 2012-04-06 18:25:28
通過放入一個循環並運行一百萬次左右並計時。至於「爲什麼」,第一個請求多次調用方法,這比不調用該方法更昂貴。編譯器可以對其進行優化。 Clang不能真正優化它,因爲它不知道你在運行時沒有用一個帶副作用的方法替換'standardUserDefaults'。所以在實踐中,它不能真正被優化,你必須打電話。但這通常是性能問題的錯誤方法。總是從測試開始。 – 2012-04-06 18:28:59