在我的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