Skip to content

Commit e51da1f

Browse files
gireeshpunathildanbev
authored andcommitted
src: simplify loop arithmetic in GetCPUInfo
Cache the repeated operations and reuse; potentially generating efficient code in some platforms, and improving readability. PR-URL: #26183 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Anatoli Papirovski <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 24f3f11 commit e51da1f

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

lib/os.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,17 @@ function cpus() {
8989
// [] is a bugfix for a regression introduced in 51cea61
9090
const data = getCPUs() || [];
9191
const result = [];
92-
for (var i = 0; i < data.length; i += 7) {
92+
let i = 0;
93+
while (i < data.length) {
9394
result.push({
94-
model: data[i],
95-
speed: data[i + 1],
95+
model: data[i++],
96+
speed: data[i++],
9697
times: {
97-
user: data[i + 2],
98-
nice: data[i + 3],
99-
sys: data[i + 4],
100-
idle: data[i + 5],
101-
irq: data[i + 6]
98+
user: data[i++],
99+
nice: data[i++],
100+
sys: data[i++],
101+
idle: data[i++],
102+
irq: data[i++]
102103
}
103104
});
104105
}

src/node_os.cc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,15 @@ static void GetCPUInfo(const FunctionCallbackInfo<Value>& args) {
120120
// The array is in the format
121121
// [model, speed, (5 entries of cpu_times), model2, speed2, ...]
122122
std::vector<Local<Value>> result(count * 7);
123-
for (int i = 0; i < count; i++) {
123+
for (int i = 0, j = 0; i < count; i++) {
124124
uv_cpu_info_t* ci = cpu_infos + i;
125-
result[i * 7] = OneByteString(isolate, ci->model);
126-
result[i * 7 + 1] = Number::New(isolate, ci->speed);
127-
result[i * 7 + 2] = Number::New(isolate, ci->cpu_times.user);
128-
result[i * 7 + 3] = Number::New(isolate, ci->cpu_times.nice);
129-
result[i * 7 + 4] = Number::New(isolate, ci->cpu_times.sys);
130-
result[i * 7 + 5] = Number::New(isolate, ci->cpu_times.idle);
131-
result[i * 7 + 6] = Number::New(isolate, ci->cpu_times.irq);
125+
result[j++] = OneByteString(isolate, ci->model);
126+
result[j++] = Number::New(isolate, ci->speed);
127+
result[j++] = Number::New(isolate, ci->cpu_times.user);
128+
result[j++] = Number::New(isolate, ci->cpu_times.nice);
129+
result[j++] = Number::New(isolate, ci->cpu_times.sys);
130+
result[j++] = Number::New(isolate, ci->cpu_times.idle);
131+
result[j++] = Number::New(isolate, ci->cpu_times.irq);
132132
}
133133

134134
uv_free_cpu_info(cpu_infos, count);

0 commit comments

Comments
 (0)