NSString的hasPrefix:与hasSuffix:哪个更省资源?

4
在我的项目中,我需要一个预定义的字符串项目前缀或后缀列表,可以是前缀或后缀,这样我就可以遍历项目并检查每个项目的前缀或后缀,只是想知道哪个更便宜?感觉hasPrefix:更便宜,但我没有任何参考来支持这一点。
谢谢

当您使用第三方开发人员编写的方法时,他们可以改进性能并针对每个版本进行优化,因此最好使用更好的方法来提高代码的一致性和可读性。在使用依赖解释器调用方法的语言时,比较字符串不会造成性能问题。 - Gabriel
1个回答

6

NSString是与CFStringRef相互转换的,因此您可以在http://www.opensource.apple.com/source/CF/CF-744.19/CFString.c中查看其实现。

相关函数为CFStringHasPrefix()CFStringHasSuffix(),它们分别使用不带或带有kCFCompareBackwards标志的CFStringFindWithOptionsAndLocale()

据我所知,这个标志对性能没有影响,只是一些循环变量的初始化方式不同。

(但是一般的“免责声明”也适用于此:您应该对您的应用程序进行性能测试,并检查前缀/后缀检查是否真正成为性能瓶颈。如果不是,请选择更合理或更易于维护的方法。)


1
只是提醒一下,我正在寻找一种更快的方法来获取NSString前缀(比[NSString hasPrefix:prefix]更快的方法)。我尝试了CFStringHasPrefix()并发现它比我的应用程序中的NSString等效物快2-3倍。我猜这对于所有CFStringRef等效物都是正确的。 - John Bowers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接