在我的SAX XML解析回调函数(XCode 4,LLVM)中,我要执行很多类似于以下代码的调用:
static const char* kFoo = "Bar";
void SaxCallBack(char* sax_string,.....)
{
if ( strcmp(sax_string, kFoo, strlen(kFoo) ) == 0)
{
}
}
可以假设strlen(kFoo)是由编译器进行了优化的吗?
(苹果的示例代码已经预先计算了strlen(kFoo),但我认为对于大量常量字符串来说,这种方法容易出错。)
编辑:进行优化的动机是在iPod touch 2G上解析我的SVG地图需要5秒(!),使用NSXMLParser。因此,我想切换到lib2xml,并优化字符串比较。
strncmp
,对吧?因为你可以只使用带有两个参数的strcmp
,它与当前写法的条件等效。 - Pascal Cuoq