Desempenho

Desempenho testado na versão 6.4.7 da CLI utilizando Node.js v20.18.0.

|------------------------------------------------------------------------|
|  STATS FROM (cross-api) VERSION (6.4.7) SIZE (349 KB) NODE (v20.18.0)  |
|-------------------------------------------|-------------|--------------|
|                  COMMAND                  |    TIME     |   Δ MEMORY   |
|-------------------------------------------|-------------|--------------|
|  help                                     |  9.703  ms  |  482.14  KB  |
|  list:provider                            |  8.725  ms  |  276.05  KB  |
|  language                                 |  8.544  ms  |  399.31  KB  |
|  config (before)                          |  7.818  ms  |  407.29  KB  |
|  config (after)                           |  4.369  ms  |  192.12  KB  |
|  revert (make:api)                        |  6.757  ms  |  523.15  KB  |
|  revert (make:module -> father)           |  8.862  ms  |  600.84  KB  |
|  revert (make:module -> son -> father)    |  11.020 ms  |  915.83  KB  |
|  revert (make:provider -> hash)           |  10.045 ms  |  655.45  KB  |
|  revert (make:provider -> hash -> father) |  11.498 ms  |  786.19  KB  |
|  make:api                                 |  18.681 ms  |  956.63  KB  |
|  make:module (father)                     |  17.376 ms  |  1160.77 KB  |
|  make:module (son -> father)              |  16.417 ms  |  1086.60 KB  |
|  make:provider (cache)                    |  9.723  ms  |  490.45  KB  |
|  make:provider (crypto)                   |  10.229 ms  |  593.90  KB  |
|  make:provider (hash)                     |  8.827  ms  |  462.36  KB  |
|  make:provider (lead)                     |  10.289 ms  |  597.63  KB  |
|  make:provider (lead -> father)           |  11.752 ms  |  800.44  KB  |
|  make:provider (mail)                     |  10.191 ms  |  609.41  KB  |
|  make:provider (mailTemplate)             |  10.729 ms  |  470.24  KB  |
|  make:provider (notification)             |  10.161 ms  |  600.66  KB  |
|  make:provider (queue)                    |  11.332 ms  |  649.66  KB  |
|  make:provider (storage)                  |  9.935  ms  |  385.78  KB  |
|-------------------------------------------|-------------|--------------|

Como fazer um medidor de desempenho simples:

import { performance } from 'node:perf_hooks';
import { memoryUsage } from 'node:process';

function measurePerformance(label: string, callback: () => unknown): void {
  if (global.gc) global.gc();

  const initialMemory = memoryUsage().heapUsed;
  const startTime = performance.now();

  callback();

  const endTime = performance.now();
  if (global.gc) global.gc();

  const finalMemory = memoryUsage().heapUsed;

  const executionTime = (endTime - startTime).toFixed(3);
  const memoryChangeKB = ((finalMemory - initialMemory) / 1024).toFixed(2);

  console.log(
    `${label.padEnd(12)} | Tempo: ${executionTime} ms | Δ Memória: ${memoryChangeKB} KB`,
  );
}

Last updated

Was this helpful?