objective-c - ObjC 中最快的 : IsEqualToString: @"" or length > 0?

标签 objective-c ios

我想知道哪个测试 iOS 7.0+ 的非空 NSString 最快。
注意:要测试的字符串将有 99% 的时间长度在 2 到 100 个字符之间。

if ([foo length] > 0)

if ([foo isEqualToString:@""] == NO && foo != nil)

我认为这取决于 isEqualToString: 是否首先比较长度(并且在这种情况下第一种方式更快)或者 isEqualToString: 是否首先比较字符串的第一个字符(并且在那种情况下,第二种方式可能会更快)。

ps:我已经知道 isEqualToString:isEqual: 快,后者本身比 compare: 快。

最佳答案

测量一下看看。

说真的。你不应该针对这样的东西进行优化,除非你能看到它实际上是一个性能瓶颈(这不太可能)。如果仪器(使用时间分析器)告诉您这是一个问题,那么正确的方法是衡量您的假设。

生成 n 百万个随机字符串,使用选项 A 然后选项 B 为代码计时,然后选择最快的。

关于objective-c - ObjC 中最快的 : IsEqualToString: @"" or length > 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192894/

相关文章:

iphone - UIButton 的行为确实很奇怪。崩溃并给出多个错误

ios - 如何在 segue 中传递对象而不是对象的细节?

ios - 为什么 UINavigationController 和 UIViewControllers 之间没有保留循环

iOS:在自定义 UITableViewCell 中更改 contentView backgroundColor on touchDown

objective-c - AFNetworking POST 请求中的 JSON 数据困惑

objective-c - 创建 PDF 时 HTML 中的图像标记

ios - 我如何继续使用 Swift 2.3 而不是 3.0,Xcode 已更新且无法再构建

iOS 核心数据错误 - 对多关系的值类型 Not Acceptable

iphone - 在 iPad 设备上测试时如何访问内存泄漏工具?

javascript - 如何防止 iOS uikeyboard 箭头触发的 "tab"操作?