1

我是 Objective C 的新手,来自 C++ 和 C# 背景。我需要做一些字符串操作。由于我需要在字符级别进行操作,因此我担心为每个字符调用函数会太慢。例如,在 C/C++ 中,使用 const char* 时,索引非常快。是否有任何文档讨论“charactersAtIndex”等方法对性能的影响?编译器是否足够聪明以内联此方法?

int current = 0;
NSString* str = @"....";//Long string
while (current < str.length && [str characterAtIndex:current] != ';')//function call at each character?
  ++current;
4

1 回答 1

2

你是对的,obj-c 方法调用比 C++ 虚拟调用更昂贵。

如果您担心性能,可以查询长度,然后分配缓冲区(取决于预期的长度,malloc 或 alloca),然后调用 getCharacters:range: 方法来获取字符串中的 unicode 字符的 C 数组。不要使用 UTF8String,除非您准备好与 IBM 的 ICU 库之类的东西链接以访问单个字符。

此外,有时 NSScanner 类也很有帮助。

于 2013-11-01T20:38:05.503 回答