Sé que puedo crear un perfil de mi código con gprof
y kprof
en Linux. ¿Existe una alternativa comparable a estas aplicaciones en Windows?Creación de un perfil de código C en Windows al usar Eclipse
Respuesta
El software comercial:
- racional Cuantificar (caro, lento, pero muy detallado)
- AQTime (menos costoso, menos lento, un poco detallada)
Software libre:
- Muy soñoliento (www.codersnotes.com)
- Lucas StackWalker (lukestackwalker.sourceforge.net)
Estas alternativas comerciales cambiar el código compilado por 'uso de variables instrumentales' (instrucciones de la adición) a la misma y realizar la sincronización withing las instrucciones adicionales. Esto significa que hacen que su aplicación disminuya la velocidad con seriedad.
Estas alternativas gratuitas usan muestreo, lo que significa que son menos detalladas, pero muy rápidas. En la práctica, descubrí que, especialmente Very Sleepy, es muy bueno para echar un vistazo rápido a los problemas de rendimiento en su aplicación.
Intenté tanto a Very Sleepy como a Luke StackWalker, pero no pueden decirme nada. Parece que no tienen acceso a mi código fuente. gprof sin embargo funciona bien. ¿Cómo? Me gustan mucho los perfiladores basados en GUI, pero no están funcionando. – Pieter
Este error fue producido por Luke StackWalker: 'ERROR: SymGetModuleInfo64, GetLastError: 1114 (Address: 7C90E514)' – Pieter
He abierto una pregunta separada para este problema aquí: http://stackoverflow.com/questions/2302596/luke- stackwalker-returns-error-when-running-gprof-works-fine – Pieter
Sí, puede perfilar código with Visual Studio
Soy un usuario de Eclipse, así que no es una opción para mí. – Pieter
@Pieter: a continuación, especifique esta importante cláusula en * la pregunta * –
En cualquier caso, las ediciones estándar y express de Visual Studio no incluyen un generador de perfiles. Con pro, hay un perfilador simple (línea de comandos) que creo que es una descarga por separado, y no es fácil de usar. Lo que Microsoft quiere es que la gente (rica) compre Team Suite. – Steve314
Hay un puerto de MinGW gprof que funciona casi igual que la variante de Linux. Puedes obtener MinGW installation completo (creo que gprof está incluido pero no estoy seguro) u obtener gprof desde MinGW binutils package.
Para Eclipse, hay TPTP pero no admite perfiles C/C++ hasta donde yo sé.
¿Cuál es la razón del perfil? ¿Desea a) medir los tiempos y obtener un gráfico de llamadas, ob) encontrar cosas que cambiar para acelerar el código? (No son lo mismo.)
Si (b) puede usar this trick, utilizando el botón Pausa en Eclipse.
Agregado: Tal vez ayudaría a transmitir alguna experiencia de lo que son en realidad problemas de rendimiento gusta, y donde se puede contar para encontrarlos. Aquí hay algunos ejemplos sencillos:
Un tipo de inserción (orden n^2), donde los elementos que se están ordenados son cadenas, y se compararon mediante una función de cadena de comparar. ¿Dónde está el punto caliente? en la comparación de cuerdas. ¿Dónde está el problema? En el tipo donde se llama a string-compare. Si n = 10 no es un problema, pero si n = 1000, de repente lleva mucho tiempo. El punto donde se llama a la comparación de cadenas es "frío", pero ahí es donde está el problema. Un pequeño número de muestras de la pila de llamadas lo señala con certeza.
Una aplicación que carga complementos tarda mucho tiempo en arrancar. Un perfilador dice que básicamente todo es "frío". Algo que mide el tiempo de E/S dice que es casi todo el tiempo de E/S, lo que parece ser lo que cabría esperar, por lo que puede parecer desesperado.Sin embargo, las muestras de pila muestran que un gran porcentaje de tiempo se usa con la pila a unas 20 capas de profundidad en el proceso de lectura de la parte de recursos de las DLL de complemento con el fin de traducir las constantes de cadena al idioma local. Investigando más a fondo, encontrará que la mayoría de las cadenas que se traducen no son del tipo que realmente necesita traducción. Simplemente los pusieron en "caso de que" pudieran necesitar traducción, y nunca se pensó que fueran algo que pudiera causar un problema de rendimiento. Arreglar ese problema trae un considerable ahorro de tiempo.
lo tanto, es común pensar en términos de "puntos calientes" y los "cuellos de botella", pero la mayoría de los programas, especialmente los más grandes, tienden a tener problemas de rendimiento en forma de llamadas de función que solicita un trabajo que no hace realmente hay que hacer. Afortunadamente, se muestran en la pila de llamadas durante el tiempo que están gastando.
Estoy interesado en crear perfiles para ver qué partes de mi código tardan más en ejecutarse, de modo que pueda descubrir eventuales ineficiencias. – Pieter
@Pieter: encontrar ineficiencias es (b). Estoy tratando de correr la voz sobre esto. Aquí hay otra opinión: http://stackoverflow.com/questions/2308026/which-has-been-the-most-reliable-fastest-windows-c-profiler-that-you-have-used/2311117#2311117 –
Suena complicado para un novato C como yo. Mi aplicación ideal de perfiles debería poder establecer un mapa de calor sobre mi código para ver qué comandos tardan más en ejecutarse. Se supone que algunos códigos requieren más tiempo de procesamiento, lo sé, pero hay muchos casos en los que esto podría ayudar a detectar las ineficiencias antes mencionadas. – Pieter
- 1. ¿Cómo puedo usar un perfil de formateador Eclipse en VIm?
- 2. Creación de un perfil de usuario extendida
- 3. perfil código de Java
- 4. Creación de un proyecto en C++ utilizando rake en Eclipse
- 5. Hacer un perfil de las consultas de MongoDB al usar el controlador C#
- 6. Perfil JUnit en Eclipse Indigo usando VisualVM
- 7. Autocompletado de código C en Eclipse
- 8. Django - Crear perfil de usuario en la creación del usuario
- 9. ¿Cómo hacer un perfil del código JRuby?
- 10. ¿Hay un complemento Eclipse C# Highlight, Complemento de código
- 11. Creación de un proyecto de prueba de Android en Eclipse
- 12. Creación de módulos de extensión de Python C para Windows
- 13. Creación de un proyecto de C++ en CodeBlocks/Eclipse que usa yacc y lex
- 14. Creación de asistentes para formularios de Windows en C#
- 15. Herramientas de análisis de perfil/rendimiento de perfil para Windows CE/Mobile
- 16. Hacer el directorio de inicio de cygwin al perfil de usuario de Windows
- 17. ¿Cómo administro un perfil de formato de Eclipse no administrado?
- 18. La creación de un archivo ZIP en Windows (XP/2003) en C/C++
- 19. Cómo usar Eclipse para depurar código JNI (Java y C++)
- 20. La creación de un proyecto multiplataforma C++ en Eclipse con las bibliotecas multiplataforma
- 21. Creación de la aplicación de Windows C# .net actualizable
- 22. Manejo de errores al usar código no administrado en uno administrado (C++, C, C++/CLI, C#)
- 23. ¿Cómo usar el perfil en ASP.NET?
- 24. Creación de un recurso XAML desde un código sin clave
- 25. Creación de un botón de menú en Windows
- 26. Creación de un instalador MSI para un servicio de Windows
- 27. Perfil Objeto + Ver Modelo + Actualizar Perfil de usuario MVC C#
- 28. pérdida de memoria al llamar código no administrado desde el código administrado en Windows 7
- 29. Usar el código Python en C/C++
- 30. Llamando al código de Python desde un hilo en C
¿Qué compilador usa en Windows? –
Puede usar gprof en Windows con el puerto MinGW del compilador GCC. –