Midiendo el rendimiento en linea de comandos con hyperfine

Hyperfine es una nueva herramienta que nos permite medir y comparar el rendimiento de diferentes programas en la terminal.

De alguna es similar al comando time, dado que se trata de medir lo que dura la ejecución, pero hyperfine ofrece algunas funciones diferentes.

Entre sus características podemos destacar:

  • Análisis estadístico a través de múltiples ejecuciones.
  • Soporte para comandos de shell arbitrarios.
  • Constante feedback sobre el rendimiento y las estimaciones actuales.
  • Se pueden ejecutar unas pruebas de calentamiento (“warmup”) antes de la prueba real de rendimiento, con ello se tiene en cuenta el funcionamiento del programa con caché.
  • Se puede establecer un numero de pasadas personalizado para cada comando (por defecto son 10) a la hora de hacer el benchmarking
  • Los comandos de borrado de caché se pueden configurar antes de cada ejecución.
  • Detección estadística de valores atípicos.
  • Y además podemos exportar los resultados a varios formatos: CSV, JSON y Markdown.

El modo de ejecución es bastante sencillo: nombre del programa, seguido del comando u comandos en cuestión, entre comillas.

hyperfine "date"

En este otro ejemplo, comparo el rendimiento de “locate” y “find” a la hora de buscar un archivo (test_time):

[jose@replicante ~]$ hyperfine "find -name test_time" "locate test_time"

Benchmark #1: find -name test_time

  Time (mean ± σ):      1.619 s ±  0.014 s    [User: 762.9 ms, System: 837.7 ms]
 
  Range (min … max):    1.600 s …  1.639 s
 
Benchmark #2: locate test_time

  Time (mean ± σ):     875.4 ms ±   6.6 ms    [User: 852.9 ms, System: 12.5 ms]
 
  Range (min … max):   864.6 ms … 886.4 ms

Como veis además del resultado final que mide el tiempo de ejecución, también nos muestra la parte correspondiente al modo de usuario y al sistema, así como el rango máximo y mínimo de la prueba.

Otra opción interesante de comparación podría ser entre los comandos grep, fgrep y egrep (por daros algunas ideas).

En la página del GitHub del proyecto, encontraréis más ejemplos de uso. También podéis consultar otras opciones en la ayuda del programa:

hyperfine --help

Instalación en GNU/Linux

Hyperfine es software libre, multiplataforma (Linux, macOS, Windows) y está escrito en lenguaje de programación Rust.

Como tal se podría instalar en cualquier sistema mediante el gestor de paquetes cargo:

cargo install hyperfine

Los usuarios de Arch Linux y derivadas (Antergos, Manjaro) nos lo encontramos en AUR:

trizen -S hyperfine

La rolling release Void Linux también lo ofrece en su propio sistema de paquetes:

xbps-install -S hyperfine

Y en Ubuntu disponemos de un paquete deb, que podemos descargar e instalar desde la terminal (dkpg -i) o nuestro gestor de software preferido (para estas cosas me gusta gdebi).

2 thoughts on “Midiendo el rendimiento en linea de comandos con hyperfine”

  1. davidochobits says:

    Interesante herramienta habrá que probarla. Saludos!

    1. tannhausser says:

      Un saludo colega! Gracias por pasarte 🙂

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.