emacs scalability cedet

emacs - Consejos de escalabilidad CEDET



scalability (1)

Las herramientas CEDET que está utilizando están limitadas por la capacidad de Emacs para rastrear cada símbolo en todo su proyecto. Un buen punto de partida para acelerar lo que CEDET / Semantic hace es a través de semanticdb-find-default-throttle . Si sabe cómo está organizado su proyecto, puede deshabilitar algunos tipos de búsquedas para acelerar el proceso.

CEDET analizará muchos archivos que cree que podría necesitar y que también llenarán la memoria. En ese caso, puedes personalizar semantic-idle-scheduler-max-buffer-size para deshabilitar el análisis de archivos grandes, semantic-idle-work-parse-neighboring-files-flag para deshabilitar el análisis de cosas cercanas aleatorias, y `semantic-idle-work -update-headers-flag ''para deshabilitar los encabezados de análisis. Tenga en cuenta que los últimos 2 se establecen de forma predeterminada en cero, pero están habilitados por algunas de las funciones de configuración automática.

CEDET / Semantic almacenará en caché una gran cantidad de datos en la memoria y construirá tablas de búsqueda ordenadas para mejorar el rendimiento. Si descubre que está editando mucho los archivos de encabezado, esas ediciones hacen que los cachés queden desactualizados y los obligan a reconstruirse. Si sale y reinicia mucho Emacs, eso obliga a Semantic a recargar grandes tablas de bases de datos.

Otra posibilidad es configurar semanticdb-persistent-path para listar solo los directorios que le interesan mucho. Esto reducirá los datos guardados, que no se volverán a cargar. Si es necesario, repasará según sea necesario, pero ayudará a mantener los datos totales bajos.

También puede usar el semantic--before-fetch-tags-hook para una función que devuelve nil en diversas condiciones. Encuentre archivos que tardan mucho tiempo en analizarse debido al tamaño, la latencia de la red o lo que sea, y configúrelos para que nunca se analicen. Eso también ahorrará tiempo.

Usar GNU Global es una buena manera de acelerar las cosas. Si lo utiliza con el símbolo semántico, los archivos en los que encuentra coincidencias se analizarán para proporcionar los datos necesarios para la pantalla de salida. No hay mucho que hacer al respecto.

Para el error que encontró arriba, si puede identificar una forma de reproducirlo, compártalo en la lista de correo de cedet-devel para que pueda arreglarse. Ese tipo de error se ha mostrado antes, generalmente cuando la etiqueta GNU Global no se convierte en una etiqueta de búfer.

Para depurar el CEDET que está fuera de control, use semantic-debug-idle-function semantic-debug-idle-work-function y la semantic-debug-idle-function semantic-debug-idle-work-function para restringir las cosas. Ver más arriba sobre alguna configuración allí.

Puede usar cedet-gnu-global-create/update-database para actualizar una base de datos, o agregarla a un gancho. No creo que haya llegado al documento todavía.

La gestión de proyectos es complicada. La mayoría de los proyectos incorporados son buenos para cosas pequeñas. Los proyectos particularmente grandes con sistemas de compilación personalizados generalmente garantizan un tipo de proyecto EDE personalizado. Crear nuevos proyectos no es tan malo. Si te fijas en ede-linux o ede-emacs, puedes captar lo básico. En su proyecto personalizado, puede resumir todos sus proyectos relacionados y anular características tales como macros, incluir directorios y compilar comandos. También tuve que escribir un proyecto personalizado para mi trabajo. Era muy similar a ede-linux con cosas exclusivas de donde trabajo.

Utilizo CEDET (el último CVS) con varios proyectos moderadamente grandes (unos pocos cientos de kLOC cada uno, principalmente C, pero algunos C ++) y, a veces, experimentan largas pausas en las que el sistema no responde por unos segundos. Más raramente, se sale completamente de control y tengo que mezclar Cg e intentar mover el cursor o cambiar a un búfer diferente para recuperar el control.

Utilizo GNU Global para crear etiquetas para los proyectos con los que trabajo, pero esto a veces sigue siendo lento, especialmente para el semantic-symref-symbol , y algunos saltos que parecen requerir el análisis de muchos encabezados y archivos de origen. En algunos casos, los errores de semantic-ia-fast-jump semantic-ia--fast-jump-helper: Tag SomeFunction has no buffer information con el mensaje semantic-ia--fast-jump-helper: Tag SomeFunction has no buffer information aunque gtags-find-tag encuentra inmediatamente (en el mismo proyecto), aunque quizás en una ubicación fuera de fecha; Esto puede ser un error temporal, por lo general, el semantic-ia-fast-jump .

Agradecería cualquier sugerencia sobre cómo

  • Acelerador CEDET sin perder todo el análisis semántico.
  • Averigüe qué causó que CEDET se saliera de control para que pueda corregir mis definiciones de proyecto o presentar un informe de error.
  • Determine por qué está fallando un análisis semántico.
  • Obtener información semántica para almacenar en caché más información para que sea más receptivo, tengo mucha memoria que me gustaría usar.
  • Administre GNU Global (cree y mantenga actualizado) para múltiples proyectos en diferentes lugares, incluidos los directorios del sistema.
  • Administrar dependencias entre proyectos que he configurado con ede-cpp-root-project .
  • Administre proyectos que tienen múltiples configuraciones de compilación, cada una con su propio "config.h" y directorio de compilación.

Hay algunos consejos en el artículo http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html , estoy buscando algo más allá de ese artículo.