pasos para libreria interfaz grafica entre diferencias cuadro crear contenedores componentes componente comparativo como java debugging user-interface profiling

para - libreria awt java pdf



Java: ¿cómo puedo ver qué partes de mi código se ejecutan más?(perfil) (12)

1) Es tu culpa :)

2) Si está usando eclipse o netbeans, intente utilizar las funciones de creación de perfiles; debería indicarle con bastante rapidez dónde está gastando su código mucho tiempo.

3) en su defecto, agregue la salida de la consola donde cree que está el bucle interno, debería poder encontrarlo rápidamente.

Estoy escribiendo un juego de damas simple en Java. Cuando muevo el mouse sobre la placa, mi procesador aumenta hasta un 50% (100% en un núcleo).

Me gustaría averiguar qué parte de mi código (asumiendo que es mi culpa) se está ejecutando durante esto.

He intentado depurar, pero la depuración paso a paso no funciona muy bien en este caso.

¿Hay alguna herramienta que pueda decirme dónde está mi problema? Actualmente estoy usando Eclipse.


En el código de un solo subproceso, me parece agregar algunas declaraciones como esta: System.out.println ("A:" + System.currentTimeMillis ()); es más simple y tan efectivo como usar un generador de perfiles. Pronto puede reducir la parte del código que causa el problema.


En pocas palabras, los perfiladores le dirán qué parte de su programa se llama cuántas veces.

No perfilo mucho mis programas, así que no tengo demasiada experiencia, pero he jugado con el generador de perfiles IDE de NetBeans cuando lo estaba probando. (Por lo general, también uso Eclipse. También veré las características de creación de perfiles en Eclipse).

El generador de perfiles de NetBeans le dirá qué hilo se estuvo ejecutando durante cuánto tiempo, y qué métodos se han llamado por cuánto tiempo, y le dará gráficos de barras para mostrar cuánto tiempo ha tardado cada método. Esto debería darle una pista sobre qué método está causando problemas. Puede echar un vistazo al generador de perfiles de Java que proporciona NetBeans IDE, si tiene curiosidad.

El perfilado es una técnica que generalmente se usa para medir qué partes de un programa ocupan mucho tiempo de ejecución, lo que a su vez puede usarse para evaluar si realizar optimizaciones sería beneficioso o no para aumentar el rendimiento de un programa.

¡Buena suerte!



O use los casos de prueba JUnit y una herramienta de cobertura de código para algunos componentes comunes de los suyos. Si hay componentes que llaman a otros componentes, verá rápidamente aquellos ejecutados muchas veces más.

Uso Clover con los casos de prueba JUnit, pero para código abierto, escuché que EMMA es bastante bueno.



Sí, hay tales herramientas: tienes que perfilar el código. Puedes probar TPTP en eclipse o quizás probar JProfiler . Eso te permitirá ver lo que se llama y con qué frecuencia.


Si está usando Sun Java 6, las versiones más recientes de JDK vienen con JVisualVM en el directorio bin. Esta es una herramienta capaz de monitorear y crear perfiles que requerirá muy poco esfuerzo de usar, ni siquiera necesita iniciar su programa con parámetros especiales. JVisualVM simplemente enumera todos los procesos java que se ejecutan actualmente y usted elige el que desea jugar con .

Esta herramienta le dirá qué métodos están usando todo el tiempo del procesador.

Hay muchas herramientas más poderosas, pero primero juega con una gratis. Luego, cuando leas qué otras características están disponibles, verás cómo podrían ayudarte.



Utilice un generador de perfiles (por ejemplo, su kit )



Este es un problema típicamente de ''Alta CPU''.

Hay dos tipos de problemas de CPU altos

a) Donde el hilo está usando 100% CPU de un núcleo (este es su escenario)

b) El uso de CPU es ''anormalmente alto'' cuando ejecutamos ciertas acciones. En tales casos, la CPU puede no ser del 100%, pero será anormalmente alta. Por lo general, esto sucede cuando tenemos operaciones intensivas de CPU en el código, como el análisis XML, la serialización de la serialización, etc.

El caso (a) es fácil de analizar. Cuando experimentas un 100% de CPU 5-6 volcados de hilo en un intervalo de 30 segundos. Busque un hilo que esté activo (en estado "ejecutable") y que esté dentro del mismo método (puede inferirlo al monitorear la pila de hilos). Lo más probable es que veas una "espera ocupada" (consulta el siguiente código para ver un ejemplo)

while(true){ if(status) break; // Thread.sleep(60000); // such a statement would have avoided busy wait }

El caso (b) también puede analizarse utilizando volcados de hilo tomados en intervalos iguales. Si tiene suerte, podrá encontrar el código del problema, si no puede identificar el código del problema mediante el uso de volcado de hilo. Necesitas recurrir a los profilers. En mi experiencia, el perfil de YourKit es muy bueno.

Siempre trato con los volcados de hilo primero. Los perfiladores solo serán el último recurso. En el 80% de los casos, podremos identificar el uso de volcados de hilo.