Me gustaría poder ver qué código en miles de líneas de código fuente se ejecuta con mayor frecuencia y tarda más. El propósito de esto sería para la optimización.
Poder ver qué partes del código se ejecutan con mayor frecuencia es importante para la optimización, porque esas partes son donde debo concentrarme para acelerar. Al mismo tiempo, por supuesto, algunos códigos se ejecutan muy a menudo pero prácticamente no requieren tiempo, por lo que también es importante poder ver qué código lleva más tiempo.
Supongo que lo mejor de ambos mundos sería un programa que sume la cantidad de tiempo que toma una pieza de código, incluidas TODAS las veces que se ejecutó (por lo tanto, averiguar qué ralentiza más su código en general). ¿Hay algún tipo de herramientas para esto?
Respuestas:
Lo que está buscando es la elaboración de perfiles :
Hay varias aplicaciones de este tipo. A veces, estos están integrados en el propio IDE. El netbeans ide es una de esas herramientas que tiene un generador de perfiles incorporado.
Otra herramienta de este tipo es visual vm .
Los perfiladores pueden trabajar de diferentes maneras, y uno debe ser consciente de las diferencias. Un enfoque es cada segundo para tomar una instantánea de los subprocesos en ejecución y ver qué métodos se invocan actualmente para cada subproceso. Esto utiliza una muestra de lo que hay ahí fuera.
El otro enfoque es instrumentar el código de bytes de Java para informar el tiempo de inicio y finalización a otra aplicación.
Escribir un perfilador no es terriblemente difícil para un hábil java. IBM tiene un artículo sobre cómo escribir su propio generador de perfiles (¡con código fuente!). Este se basa en el Java Interactive Profiler .
Hay una gran cantidad de perfiladores, tanto gratuitos como comerciales (¿qué tal un perfilador conectado para ejecutar instancias de JVM que pueden informarle (correo electrónico o alguna otra notificación) cuando métodos particulares exceden el tiempo de ejecución esperado o conectado a un programa que informa cuando las solicitudes web tardaron demasiado: ¿se ha guardado el perfil histórico de esa solicitud para una inspección posterior? Solo tiene que saber lo que está buscando para comenzar a encontrarlos e ir desde allí.
Una vez que tenga el generador de perfiles, podrá interpretar los resultados del perfil .
fuente