leakage icon indicating copy to clipboard operation
leakage copied to clipboard

Extremely low performance on node.js 11

Open peoro opened this issue 7 years ago • 3 comments

Leakage is incredibly slow on my system (with an Intel(R) Core(TM) i7-3610QM CPU).

Take the following minimal example:

$ cat leakage.js
const sinon = require('sinon');
const leakage = require('leakage');

it(`test`, function(){
        this.timeout( 1000000 );
        leakage.iterate( ()=>{} );
});

$ npx mocha leakage.js
(node:7249) ExperimentalWarning: queueMicrotask() is experimental.
  ✓ test (26544ms)

  1 passing (27s)

The test time decreases from 26s to ~4.6s if I avoid including sinon. In my real tests, where I require a bunch of other modules besides sinon, testing a no-op function for leaks takes minutes.

Is this the expected behavior? I don't think so, unless it's due to recent fixes for the latest v8, since several issues mention a suggested timeout of 5000ms.

I'm running node v11.10.0 and mocha 5.2.0 on a Linux 4.20.7 system.

peoro avatar Feb 16 '19 04:02 peoro

Hey @peoro!

Sorry for the late response. I have been trying to have a quick look into this issue for todays, but I was just too busy.

Do you use nvm? Can you try if the issue is reproducible on node 10 or node 8?

andywer avatar Feb 20 '19 20:02 andywer

I just setup https://github.com/peoro/leakage-test and am using Travis CI to run the minimal test on a bunch of versions of node (8, 10 and 11). You can see the results here: https://travis-ci.com/peoro/leakage-test

With node 8 and 10 the minimal test case is fast-ish: less than 10s regardless of whether I require sinon. With node 11 the results are similar to my local system: as fast as the other cases without sinon, while ~30s after sinon is loaded.

peoro avatar Feb 20 '19 22:02 peoro

@peoro is this the case with v12 as well?

brandonros avatar Sep 25 '19 22:09 brandonros