Quiero obtener el seguimiento de la pila cuando falla la aplicación. Entiendo que la opción -dinámica permite obtener el seguimiento completo de la pila con los nombres de las funciones. Pero me preocupa si habrá algún impacto en el rendimiento de mi aplicación.¿Agregará la opción de engarce rdinámico al rendimiento de impacto de gcc/g ++?
Respuesta
Sí, lo hay, aunque es muy específico y normalmente no es motivo de preocupación.
La opción -dinámica indica al vinculador que agregue símbolos a las tablas de símbolos que normalmente no se necesitan en el tiempo de ejecución. Significa que hay más, posiblemente muchos más, símbolos que el enlazador dinámico necesita eliminar en el tiempo de ejecución para la resolución del símbolo.
Específicamente, dado que las búsquedas de tabla de símbolos en sistemas basados en GNU se implementan usando un hash, tener más símbolos aumenta las posibilidades de que haya colisiones hash. Dado que todos los símbolos que colisionan en la tabla hash se sientan en una lista, el vinculador de tiempo de ejecución debe atravesar la lista y comparar, utilizando memcmp, cada nombre de símbolo. Tener más símbolos colisionando en el hash significa tener listas más largas y tomará más tiempo para resolver cada símbolo dinámico.
Esta situación es ligeramente peor para C++ que para C, con la multitud de nombres de símbolos con el mismo prefijo debido a los nombres de clase.
En la práctica, esto solo tiene efecto la primera vez que se utiliza un símbolo y, a menos que su aplicación sea muy grande y contenga muchos símbolos, no se sentirá.
En el raro caso de que su aplicación sea tan grande, se pueden usar trucos como prelinking para superar la sobrecarga.
- 1. Impacto del rendimiento de la herencia virtual
- 2. Impacto de rendimiento de -fno-strict-aliasing
- 3. ¿Minimiza el rendimiento de impacto de Node.js?
- 4. Impacto del rendimiento de los métodos virtuales
- 5. Tamaño grande de Permgen + impacto en el rendimiento
- 6. Impacto en el rendimiento de copiar variables de php
- 7. Log.d e impacto en el rendimiento
- 8. ¿Cuál es el impacto en el rendimiento de los Contadores de rendimiento
- 9. ¿Impacto de hyperthreading en el rendimiento del compilador?
- 10. ¿Tiene algún impacto en el rendimiento de Oracle al usar LIKE 'cadena' vs = 'cadena'?
- 11. ¿Se ha producido un impacto en la memoria y el rendimiento al utilizar Bloch's Builder Pattern?
- 12. ¿Algún impacto negativo al usar Mod-Rewrite?
- 13. Impacto en el rendimiento de la aplicación de LayoutTransform vs RenderTransform?
- 14. Impacto del diseño de WPF (Silverlight) Transformar en el rendimiento de la aplicación
- 15. impacto en el rendimiento de la combinación "caliente" y "en línea" para una definición de función
- 16. Entity Framework Designer No agregará la tabla
- 17. UILabel layer cornerRadius tiene un impacto negativo en el rendimiento
- 18. ¿Por qué la reutilización de un DataContext tendría un impacto negativo en el rendimiento?
- 19. palabra clave 'nueva' en getter> impacto en el rendimiento?
- 20. ¿Hay algún impacto en el rendimiento en el uso de Live en lugar de vincular jQuery?
- 21. Marcadores vs. Puntos vectoriales - impacto en el rendimiento
- 22. Impacto en el rendimiento del cambio a interfaces genéricas
- 23. ¿Tiene ACL en Linux un impacto en el rendimiento?
- 24. ¿Cómo agregas un enlace que agregará un evento al calendario de iPhone de Safari?
- 25. ¿Cuánto impacto tiene el uso de 'var' en el rendimiento del compilador de C#?
- 26. C++: impacto en el rendimiento de las clases GRANDES (con un montón de código)
- 27. Reflejo de Java: impacto de setAccessible (verdadero)
- 28. Bajo C# cuánto de un impacto en el rendimiento es un intento, lanzar y bloque catch
- 29. rendimiento de la función anónima en PHP
- 30. Impacto de cientos de subprocesos inactivos