os: cache homedir, remove getCheckedFunction

PR-URL: https://github.com/nodejs/node/pull/50037
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
This commit is contained in:
Aras Abbasi 2023-10-15 08:50:31 +02:00 committed by GitHub
parent aad8002b88
commit 0f0dd1a493
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 95 additions and 2 deletions

31
benchmark/os/homedir.js Normal file
View file

@ -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
benchmark/os/hostname.js Normal file
View file

@ -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
benchmark/os/uptime.js Normal file
View file

@ -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');
}
}

View file

@ -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);
}