有以下两种情况之间的速度差: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