~webapps/unity-js-scopes/node.js

« back to all changes in this revision

Viewing changes to benchmark/misc/module-loader.js

  • Committer: Marcus Tomlinson
  • Date: 2015-11-13 07:59:04 UTC
  • Revision ID: marcus.tomlinson@canonical.com-20151113075904-h0swczmoq1rvstfc
Node v4 (stable)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
var fs = require('fs');
 
2
var path = require('path');
 
3
var common = require('../common.js');
 
4
var packageJson = '{"main": "index.js"}';
 
5
 
 
6
var tmpDirectory = path.join(__dirname, '..', 'tmp');
 
7
var benchmarkDirectory = path.join(tmpDirectory, 'nodejs-benchmark-module');
 
8
 
 
9
var bench = common.createBenchmark(main, {
 
10
  thousands: [50]
 
11
});
 
12
 
 
13
function main(conf) {
 
14
  rmrf(tmpDirectory);
 
15
  try { fs.mkdirSync(tmpDirectory); } catch (e) {}
 
16
  try { fs.mkdirSync(benchmarkDirectory); } catch (e) {}
 
17
 
 
18
  var n = +conf.thousands * 1e3;
 
19
  for (var i = 0; i <= n; i++) {
 
20
    fs.mkdirSync(benchmarkDirectory + i);
 
21
    fs.writeFileSync(benchmarkDirectory + i + '/package.json', '{"main": "index.js"}');
 
22
    fs.writeFileSync(benchmarkDirectory + i + '/index.js', 'module.exports = "";');
 
23
  }
 
24
 
 
25
  measure(n);
 
26
}
 
27
 
 
28
function measure(n) {
 
29
  bench.start();
 
30
  for (var i = 0; i <= n; i++) {
 
31
    require(benchmarkDirectory + i);
 
32
  }
 
33
  bench.end(n / 1e3);
 
34
}
 
35
 
 
36
function rmrf(location) {
 
37
  try {
 
38
    var things = fs.readdirSync(location);
 
39
    things.forEach(function(thing) {
 
40
      var cur = path.join(location, thing),
 
41
          isDirectory = fs.statSync(cur).isDirectory();
 
42
      if (isDirectory) {
 
43
        rmrf(cur);
 
44
        return;
 
45
      }
 
46
      fs.unlinkSync(cur);
 
47
    });
 
48
    fs.rmdirSync(location);
 
49
  } catch (err) {
 
50
    // Ignore error
 
51
  }
 
52
}