在我的SAX解析XML的回调(的XCode 4,LLVM),我做了很多电话来 这种类型的代码:我可以指望我的编译器优化const char *上的strlen吗?
static const char* kFoo = "Bar";
void SaxCallBack(char* sax_string,.....)
{
if (strcmp(sax_string, kFoo, strlen(kFoo)) == 0)
{
}
}
它是安全的假设的strlen(kFoo)由优化编译器?
(苹果的示例代码 已预先计算的strlen(kFoo),但我认为这是很容易出错的大量常量字符串的。)
编辑:动机优化:分析我的SVG地图上的iPod触摸2G需要5秒(!)使用NSXMLParser。所以,我想切换到lib2xml,并优化字符串比较。
初学者优化建议:不要。对专家的优化建议:尚未。除非分析表明这是你的程序中的瓶颈,否则我认为你不应该担心它。 – freespace 2011-04-24 13:24:05
你的意思是'strncmp',对吧?因为你可以使用'strcmp'(带有两个参数),它就等同于当前写入的条件。 – 2011-04-24 13:28:12
@freespace问题是“我可以指望我的编译器优化...?”。除非你认为这个建议适用于编译器,否则我不认为它与这个问题有什么关系。 – 2011-04-24 13:32:30