web-dev-qa-db-fra.com

ReferenceError: les performances ne sont pas définies lors de l'utilisation de performance.now ()

Je reçois une erreur ReferenceError: performance is not defined lorsque vous essayez d'utiliser performance.now () pour mesurer le temps d'exécution d'un appel de fonction:

export async function find(someId: string, ctx: context.IContext) {

      try {
        var t0 = performance.now();

        var res = someModel.find(someId, ctx.cookies);

        var t1 = performance.now();
        console.log("Call to find took " + (t1 - t0) + " milliseconds.");

        return res;
      } catch (err) {
        console.error(err);
        throw err;
      }
    }

Des idées sur la façon de résoudre ce problème?

17
Elsban

Je sais que cela est étiqueté front-end mais si quelqu'un rencontre cette solution pour une solution node.js (comme moi), vous devez d'abord exiger des performances du module perf_hooks (disponible dans le nœud 8.5+) .

const {performance} = require('perf_hooks');
const t0 = performance.now();
...
31
gilmatic

Étant donné que le module "perf_hook" exporte plusieurs constructions (objets, fonctions, constantes, etc.), vous devrez spécifier explicitement la construction que vous souhaitez utiliser. Dans ce cas, vous avez besoin de la construction performance. La déclaration peut se faire de deux manières:

const performance = require('perf_hooks').performance;

ou

const { performance } = require('perf_hooks'); //object destructuring
4
Lae Kettavong