%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home2/vacivi36/vittasync.vacivitta.com.br/vittasync/node/benchmark/error/
Upload File :
Create Path :
Current File : //home2/vacivi36/vittasync.vacivitta.com.br/vittasync/node/benchmark/error/node-error-stack.js

'use strict';

const common = require('../common');
const assert = require('assert');

const bench = common.createBenchmark(main, {
  n: [1e6],
  code: [
    'built-in',
    'ERR_HTTP2_STREAM_SELF_DEPENDENCY',
    'ERR_INVALID_STATE',
  ],
  stackTraceLimit: [0, 10],
}, {
  flags: ['--expose-internals'],
});

function getErrorStackFactory(code) {
  const {
    ERR_INVALID_STATE,
    ERR_HTTP2_STREAM_SELF_DEPENDENCY,
  } = require('internal/errors').codes;

  switch (code) {
    case 'built-in':
      return (n) => new Error().stack;
    case 'ERR_HTTP2_STREAM_SELF_DEPENDENCY':
      return (n) => new ERR_HTTP2_STREAM_SELF_DEPENDENCY().stack;
    case 'ERR_INVALID_STATE':
      return (n) => new ERR_INVALID_STATE(n + '').stack;
    default:
      throw new Error(`${code} not supported`);
  }
}

function main({ n, code, stackTraceLimit }) {
  const getStack = getErrorStackFactory(code);

  Error.stackTraceLimit = stackTraceLimit;

  // Warm up.
  const length = 1024;
  const array = [];
  for (let i = 0; i < length; ++i) {
    array.push(getStack(i));
  }

  bench.start();

  for (let i = 0; i < n; ++i) {
    const index = i % length;
    array[index] = getStack(index);
  }

  bench.end(n);

  // Verify the entries to prevent dead code elimination from making
  // the benchmark invalid.
  for (let i = 0; i < length; ++i) {
    assert.strictEqual(typeof array[i], 'string');
  }
}

Zerion Mini Shell 1.0