Una introducción a la API de rendimiento de Node.js

Node.js ofrece herramientas potentes para medir y optimizar el rendimiento de tus aplicaciones. Una de ellas es la API de Rendimiento, que permite capturar marcas de tiempo de alta resolución y métricas de rendimiento. ¡Aprendamos más!

Daniel Costa

Daniel Costa

29 June 2025

Una introducción a la API de rendimiento de Node.js

Node.js proporciona herramientas potentes para medir y optimizar el rendimiento de tus aplicaciones. Una de estas herramientas es la Performance API, que permite a los desarrolladores capturar marcas de tiempo de alta resolución y varias métricas de rendimiento. Esta guía te presentará los componentes clave de la Node.js Performance API y cómo usarlos de manera efectiva.

Por qué el rendimiento importa en Node.js

Node.js destaca en su arquitectura asíncrona basada en eventos, perfectamente adecuada para tareas vinculadas a E/S. Sin embargo, incluso en este entorno sin bloqueo, el rendimiento sigue siendo primordial. Las aplicaciones lentas conducen a usuarios frustrados y dificultan la escalabilidad. Identificar los cuellos de botella y optimizar el código se vuelve esencial para una experiencia de usuario perfecta.

¿Interesado en aumentar el tiempo de respuesta de tu API? El siguiente artículo ofrece una guía paso a paso sobre cómo aumentar el tiempo de respuesta de tu API.

¿Por qué usar la Node.js Performance API?

  1. Identificar cuellos de botella de rendimiento: Los cuellos de botella de rendimiento pueden degradar significativamente la experiencia del usuario. Usando la Performance API, los desarrolladores pueden señalar los momentos exactos en los que se producen retrasos, ya sea en la ejecución de funciones, la carga de recursos o el manejo de solicitudes HTTP. Esta precisión permite optimizaciones específicas.
  2. Optimizar el uso de recursos: Monitorear el rendimiento ayuda a comprender cómo se están utilizando los recursos como la CPU y la memoria. Al identificar el uso ineficiente de los recursos, los desarrolladores pueden optimizar su código para que sea más eficiente, reduciendo los costos y mejorando la escalabilidad.
  3. Mejorar la experiencia del usuario: Las aplicaciones que responden rápidamente brindan una mejor experiencia de usuario. La Performance API ayuda a medir métricas clave como el Tiempo hasta el primer byte (TTFB) y la Primera representación de contenido (FCP), lo que permite a los desarrolladores realizar mejoras que conducen a tiempos de carga más rápidos e interacciones más fluidas.
  4. Mejorar la estabilidad de la aplicación: El monitoreo continuo del rendimiento ayuda a detectar anomalías y posibles problemas antes de que se vuelvan críticos. Este enfoque proactivo garantiza un mayor tiempo de actividad y confiabilidad de la aplicación.

Introducción a la Node.js Performance API

La Performance API, accesible a través del módulo perf_hooks, equipa a los desarrolladores de Node.js con un conjunto de herramientas completo para medir y analizar el rendimiento de la aplicación. Ofrece una ventaja significativa sobre los métodos tradicionales como Date.now(), proporcionando una sincronización de alta resolución y un enfoque más estructurado para la evaluación del rendimiento. En el método Date.now(), verás algo como;

const startTime = Date.now();
// call a function to perform a task()
console.log(`Task duration: ${Date.now() - startTime} milliseconds`);

La función Date.now() funciona bien, pero de nuevo, aunque aparentemente sencillo, este método puede no ser fiable porque los cambios en el reloj del sistema pueden desviar las mediciones.

Aquí es donde entra en escena la Node.js Performance API. Queremos poder medir completamente el uso del tiempo de nuestra aplicación y que no nos molesten cosas como el reloj del sistema, ¿verdad?

La Node.js Performance API se basa en varios métodos y clases centrales proporcionados por el módulo perf_hooks. Estos incluyen:

  1. performance.now(),
  2. performance.mark(),
  3. performance.measure(), y el
  4. PerformanceObserver.

Cada una de estas herramientas tiene un propósito distinto en la captura y el análisis de las métricas de rendimiento.

Usando performance.now()

El método performance.now() devuelve una marca de tiempo de alta resolución en milisegundos. Esto es útil para medir intervalos dentro de tu aplicación con mayor precisión que Date.now().

Para obtener la duración de una tarea, agrega el método performance.now() al principio y al final de la operación que deseas medir de la siguiente manera;

const { performance } = require('node:perf_hooks');
const start = performance.now();
// Perform some operations
const end = performance.now();
console.log(`Time taken: ${end - start} ms`);

En primer lugar, importamos el rendimiento de los módulos de nodo, y luego creamos constantes de inicio y fin y les asignamos los métodos performance.now para obtener el tiempo preciso de la operación.

La salida del código anterior debería verse así;

Time taken: 1253.**** ms.

Usando performance.mark()

El método performance.mark() en Node.js te permite crear marcas de tiempo con nombre (o marcas) en puntos específicos de tu código. Estas marcas te ayudan a medir el tiempo que transcurre entre diferentes partes de tu aplicación, lo que te da información sobre los cuellos de botella del rendimiento.

const { performance } = require('node:perf_hooks');

performance.mark('A');
// Some operations
performance.mark('B');

En este ejemplo, performance.mark('A') y performance.mark('B') crean dos marcas etiquetadas como 'A' y 'B', respectivamente.

Las marcas también pueden incluir detalles adicionales, que pueden ser útiles para la depuración o un análisis más profundo.
performance.mark('A', { detail: 'Start of operation' }); performance.mark('B', { detail: 'End of operation' });

Aquí, la propiedad detail proporciona información adicional sobre lo que representa cada marca.
Una vez que hayas creado las marcas, puedes medir la duración entre ellas usando performance.measure().

Usando performance.measure()

performance.measure() es una función dentro de la Performance API de Node.js que calcula específicamente la duración entre dos puntos marcados en la línea de tiempo de ejecución de tu aplicación. Esencialmente, crea una entrada de medición y almacena el tiempo transcurrido para su posterior recuperación y análisis.

Recuerda que en la sección performance.mark(), creamos dos marcas: A & B. En esta sección, las probaremos y veremos cómo funciona performance.mark() con performance.measure().

performance.measure('A to B', 'A', 'B');
const measures = performance.getEntriesByType('measure');
measures.forEach(measure => {
  console.log(`${measure.name}: ${measure.duration}ms`);
});

Esto creará una medida llamada 'A to B', que calcula el tiempo transcurrido entre las marcas 'A' y 'B'.

Cuando ejecutes el código anterior, la salida mostrará la duración entre las dos marcas 'A' y 'B'. Aquí hay un ejemplo de lo que la consola podría imprimir algo como:

A to B: 12.345ms

Esta salida indica que las operaciones entre las marcas 'A' y 'B' tardaron aproximadamente 12.345 milisegundos en completarse.

Usando PerformanceObserver

La interfaz PerformanceObserver en Node.js permite a los desarrolladores observar y manejar asíncronamente las entradas de rendimiento, como marcas, medidas y entradas de tiempo de recursos. Es particularmente útil para monitorear y reaccionar a los datos de rendimiento a medida que se recopilan, lo que la convierte en una herramienta esencial para el análisis y la optimización del rendimiento en tiempo real.

Para usar PerformanceObserver, necesitas crear una instancia de ella y definir una función de devolución de llamada que maneje las entradas de rendimiento. Aquí hay una configuración básica:

const { PerformanceObserver, performance } = require('node:perf_hooks');

const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(entry);
  });
});

observer.observe({ entryTypes: ['mark', 'measure'] });

En este ejemplo:

  1. Importando PerformanceObserver y performance: Los objetos PerformanceObserver y performance se importan desde el módulo perf_hooks.
  2. Creando un observador: Se crea una instancia de PerformanceObserver con una función de devolución de llamada. Esta función se llama cada vez que se registran nuevas entradas de rendimiento.
  3. Observando tipos de entrada: Se llama al método observer.observe con un objeto que especifica los tipos de entradas a observar (mark y measure en este caso).

Casos de uso prácticos para PerformanceObserver

1. Monitoreo del rendimiento en tiempo real:

2. Analizando la carga de recursos:

3. Depuración y creación de perfiles:

4. Métricas de rendimiento personalizadas:

Pruebas de aplicaciones en Node.js

Hasta ahora, hemos aprendido sobre la Node.js Performance API, por qué es importante, cómo funciona y cómo difiere de la función predeterminada Date.now().

Sin embargo, si estás construyendo una aplicación, querrás concentrarte en construir tu aplicación y dejar las pruebas a otros servicios. Bueno, gracias a Apidog, puedes probar tus APIs y aplicaciones.

API performance testing by Apidog

Apidog es una herramienta poderosa diseñada específicamente para pruebas de API, incluidas las pruebas de rendimiento. Ofrece soluciones integrales para crear, administrar y probar APIs. Apidog te permite simular comportamientos de API, definir casos de prueba y generar informes detallados. Con su interfaz intuitiva, puedes configurar fácilmente pruebas de rendimiento, analizar los tiempos de respuesta e identificar los cuellos de botella del rendimiento.

button

Conclusión

La Node.js Performance API, que incluye herramientas como performance.mark(), performance.measure() y PerformanceObserver, proporciona a los desarrolladores capacidades poderosas para monitorear y optimizar el rendimiento de la aplicación. Al aprovechar estas herramientas, puedes obtener información precisa sobre las características de rendimiento de tus aplicaciones Node.js, identificar cuellos de botella e implementar optimizaciones específicas para mejorar la eficiencia y la experiencia del usuario.

Más allá de la Performance API, emplear las mejores prácticas de APIs/Aplicaciones, y pruebas de carga y monitoreo robustos pueden aumentar significativamente el rendimiento general de tus aplicaciones. Estos esfuerzos combinados aseguran que tus aplicaciones Node.js se ejecuten sin problemas, escalen de manera efectiva y brinden una experiencia de usuario superior, manteniendo así una ventaja competitiva en el mercado.

Explore more

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

15 April 2025

Cómo usar n8n con servidores MCP

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

14 April 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

11 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs