¿Cómo ver qué partes de su código se ejecutan con más frecuencia?

11

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?

sinθ
fuente
¿Tiene preferencia por el sistema operativo o el lenguaje de programación?
Mawg dice que reinstale a Mónica el

Respuestas:

15

Lo que está buscando es la elaboración de perfiles :

En ingeniería de software, la creación de perfiles ("creación de perfiles de programas", "creación de perfiles de software") es una forma de análisis dinámico de programas que mide, por ejemplo, el espacio (memoria) o la complejidad temporal de un programa, el uso de instrucciones particulares o la frecuencia y duración de las llamadas a funciones. El uso más común de la información de perfil es ayudar a la optimización del programa.

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. ingrese la descripción de la imagen aquí

Otra herramienta de este tipo es visual vm .

ingrese la descripción de la imagen aquí

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 .

Comunidad
fuente