这种类型的代码:
static const char* kFoo = "bar";voID SaxCallBack(char* sax_string,.....){ if ( strcmp(sax_string,kFoo,strlen(kFoo) ) == 0) { } }
(苹果示例代码
已经预先计算了strlen(kFoo),但是我认为这是容易出现大量常量字符串的错误.)
编辑:动机优化:解析我的SVG地图在iPod touch 2G需要5秒(!)使用NSXMLParser.所以,我想切换到lib2xml,并优化字符串比较.
解决方法 如果通过“LLVM”你的意思是俚语,那么是的,你可以指望ang -O来优化strlen.这是你的函数的代码如何:_SaxCallBack:Leh_func_begin1: pushq %rbpLtmp0: movq %rsp,%rbpLtmp1: leaq L_.str1(%rip),%rsi movl ,%edx callq _strncmp ...
我将strcmp更改为strncmp,但是第三个参数确实被立即$3替代.
请注意,gcc 4.2.1 -O3不会优化此strlen调用,并且您只能期望它在您的问题的精确条件下工作(特别是,strlen的字符串和调用必须在同一个文件中).
总结以上是内存溢出为你收集整理的可以指望我的编译器在const char *上优化strlen吗?全部内容,希望文章能够帮你解决可以指望我的编译器在const char *上优化strlen吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)