Skip to content

Commit

Permalink
os: cache homedir, remove getCheckedFunction
Browse files Browse the repository at this point in the history
  • Loading branch information
Uzlopak committed Oct 10, 2023
1 parent 95b8f5d commit 216f85a
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 2 deletions.
31 changes: 31 additions & 0 deletions benchmark/os/homedir.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use strict';

const common = require('../common.js');
const homedir = require('os').homedir;
const assert = require('assert');

const bench = common.createBenchmark(main, {
n: [1e6],
});

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

bench.start();
for (let i = 0; i < n; ++i) {
const index = i % length;
array[index] = homedir();
}
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');
}
}
31 changes: 31 additions & 0 deletions benchmark/os/hostname.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use strict';

const common = require('../common.js');
const hostname = require('os').hostname;
const assert = require('assert');

const bench = common.createBenchmark(main, {
n: [1e6],
});

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

bench.start();
for (let i = 0; i < n; ++i) {
const index = i % length;
array[index] = hostname();
}
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');
}
}
31 changes: 31 additions & 0 deletions benchmark/os/uptime.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use strict';

const common = require('../common.js');
const uptime = require('os').uptime;
const assert = require('assert');

const bench = common.createBenchmark(main, {
n: [1e5],
});

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

bench.start();
for (let i = 0; i < n; ++i) {
const index = i % length;
array[index] = uptime();
}
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], 'number');
}
}
4 changes: 2 additions & 2 deletions lib/os.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ const {
} = internalBinding('os');

function getCheckedFunction(fn) {
return hideStackFrames(function checkError(...args) {
return hideStackFrames(function checkError() {
const ctx = {};
const ret = fn(...args, ctx);
const ret = fn(ctx);
if (ret === undefined) {
throw new ERR_SYSTEM_ERROR(ctx);
}
Expand Down

0 comments on commit 216f85a

Please sign in to comment.