En mi SAX XML análisis de devolución de llamada (XCode 4, LLVM), estoy haciendo un montón de llamadas a este tipo de código:¿Puedo contar con mi compilador para optimizar strlen en const char *?
static const char* kFoo = "Bar";
void SaxCallBack(char* sax_string,.....)
{
if (strcmp(sax_string, kFoo, strlen(kFoo)) == 0)
{
}
}
¿Es seguro asumir que strlen (kFoo) está optimizado por el ¿compilador?
(El código de ejemplo de Apple habían pre-calculada strlen (kFoo), pero creo que esto es propenso a errores para un gran número de cadenas constantes.)
Editar: La motivación para la optimización de: analizar mi mapa SVG en el iPod tocar 2G lleva 5 segundos (!) con NSXMLParser. Por lo tanto, quiero cambiar a lib2xml y optimizar las comparaciones de cadenas.
Consejos de optimización para principiantes: no. Consejos de optimización para expertos: todavía no. A menos que los perfiles hayan demostrado que es aquí donde está el cuello de la botella en su programa, creo que no debería preocuparse por ello. – freespace
Quieres decir 'strncmp', ¿verdad? Porque podrías usar 'strcmp' (con dos argumentos) y sería equivalente a la condición tal como está escrita actualmente. –
@freespace La pregunta es "¿Puedo contar con mi compilador para optimizar ...?". A menos que piense que este consejo se aplica a los compiladores, no veo cómo es relevante para esta pregunta. –