В моем обратном вызове синтаксического анализа 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) оптимизируется компилятором?
(В примере кода Apple был предварительно рассчитан strlen(kFoo), но я думаю, что это подвержено ошибкам при большом количестве постоянных строк.)
Редактировать: Мотивация для оптимизации: анализ моей карты SVG на iPod touch 2G занимает 5 секунд (!) с использованием NSXMLParser. Итак, я хочу переключиться на lib2xml и оптимизировать сравнение строк.
strncmp
, верно? Потому что вы могли бы просто использоватьstrcmp
(с двумя аргументами), и это было бы эквивалентно условию в том виде, в каком оно написано сейчас. - person Pascal Cuoq   schedule 24.04.2011