Eclipse tiene dos indexadores C/C++ (rápidos y completos):¿cual es la diferencia?
-
11-09-2019 - |
Pregunta
Eclipse CDT proporciona dos indexadores para código C/C++ (Preferencias > C/C++ > Indexador).¿Alguien sabe cuál es la diferencia exacta entre estos dos?
El archivo de ayuda no es exactamente esclarecedor:
"CDT admite la contribución de indexadores adicionales, con 2 indexadores que se proporcionan con la versión predeterminada de CDT:
Indexador rápido de C/C++:Proporciona capacidades de indexación más rápidas, tanto declaraciones como información de referencia cruzada.Este es el indexador recomendado.
Indexador C/C++ completo:Proporciona capacidades de indexación aún más precisas a costa del rendimiento, tanto declaraciones como información de referencia cruzada ".
¿Qué significa ser más? preciso:¿Indiza más cosas y, de ser así, cuáles?
Solución
A continuación es un extracto de la página CDT describiendo su análisis e indexación ( CDT / diseños / Visión general de analizar ). Se da una descripción bastante buena de lo que son las diferencias y en el que el controlador paso a paso rápido puede fallar:
de análisis y resolución de unión es un proceso lento, este es un problema debido a que el usuario espera que la edición de código características tales como el contenido de aportación que debe rápido. Por esta razón las tiendas CDT información de la unión en un disco de caché llamado “índice” o “la PDom” (Modelo de objetos persistentes de documentos) en con el fin de ser capaz de proporcionar características que responden rápidamente a las peticiones de los usuarios.
La construcción del índice implica el análisis sintáctico todo el código en un proyecto, resolver todos los enlaces y escribir los enlaces con el índice. El índice es luego se actualiza de forma incremental cada vez el usuario edita un archivo.
Las versiones anteriores de CDT soporte de tres diferentes modos de indexación, rápido indexación, indexación completa y sin indexación. La configuración por defecto es el indexador rápido porque la indexación de una proyecto grande puede ser una pérdida de tiempo proceso. La diferencia entre el indexadores rápida y completa es que la indexador rápida se saltará archivos de cabecera que ya se han analizado una vez, mientras que el indexador completa será siempre volver a analizar un archivo de cabecera cada vez que se está incluido. Sin embargo, es importante entender que el indexador completa, a pesar de su nombre, todavía no es totalmente exacta.
Cuando un archivo de cabecera se incluye en una archivo de origen que está sujeta a ningún macros que se han definido en ese punto. Algunas de las cabeceras de la biblioteca usan macros en conjunción con preprocesador condicionales (#ifdefs) a parcialmente incluir un archivo de cabecera. A veces, tales un archivo de cabecera se incluye más de una vez en un proyecto, en caso de que las macros la cabecera depende son diferentes cada vez que la cabecera se incluye a continuación, diferentes partes de la cabecera pueden ser incluido en diferentes archivos de origen. Ni indexador será precisa en este escenario, ya que sólo índice de la cabecera de la primera vez que se encontrado.
cabecerasEl indexador completo será re-análisis sintáctico que ya ha encontrado, pero no va a volver a indexar ellos. Por lo tanto archivos de origen que incluyen una cabecera puede ser analizada con mayor precisión, pero la Header en sí sólo se ordenará la una vez. El indexador completa es mucho más lento que el indexador rápido porque del análisis adicional que hace, pero es sólo ligeramente más precisa. por esta razón, el indexador no es completa recomendado y ha sido retirado de la versión actual del CDT.
Cada proyecto tiene un único PDom asociado a ello. El PDom se almacena en el disco como un archivo binario plana. los indexador sólo se cabeceras de índice que están incluidos en los archivos de origen, por lo que si hay un archivo .h en el proyecto que no está siendo incluido por cualquier .c o archivo .cpp, entonces normalmente no va a conseguir indexado. Sin embargo hay una preferencia estableciendo para indexar todos los archivos en el proyecto.
Otros consejos
Creo que siempre reparses cualquier encontrado / incluidos archivos sin necesidad de "caching". La razón de que si el contenido de los archivos podrían depender de las definiciones de preprocesador por lo que siempre se reparsed. analizador rápido asume que nada ha cambiado desde que se encontró por primera vez el archivo.
(pero podría estar equivocado)
¿Alguien sabe cuál es la diferencia exacta entre estos dos?
En mi experiencia, sobre el montón de 32 MB.