Weird result testing operation per sec
I'm running on node 8.11
this test script:
let end = false;
let i = 0;
setInterval(() => { i++; }).unref();
let k = 0;
async function loop() {
k++
if (end === false)
setImmediate(loop);
}
console.time('test');
loop()
.then(() => {
setTimeout(() => {
end = true;
console.log('interval', i);
console.log('recursion', k);
console.timeEnd('test');
}, 1000);
})
And the output is:
interval 997
recursion 824687
test: 1001.831ms
But, if I comment these two lines:
// if (end === false)
// setImmediate(loop);
The results are:
interval 537
recursion 1
test: 1003.882ms
I studied hard the phases of nodejs but I don't understand why a setImmediate
should impact on the results of the interval function.
Do you have some explanations?
Thank you
node.js performance event-loop
add a comment |
I'm running on node 8.11
this test script:
let end = false;
let i = 0;
setInterval(() => { i++; }).unref();
let k = 0;
async function loop() {
k++
if (end === false)
setImmediate(loop);
}
console.time('test');
loop()
.then(() => {
setTimeout(() => {
end = true;
console.log('interval', i);
console.log('recursion', k);
console.timeEnd('test');
}, 1000);
})
And the output is:
interval 997
recursion 824687
test: 1001.831ms
But, if I comment these two lines:
// if (end === false)
// setImmediate(loop);
The results are:
interval 537
recursion 1
test: 1003.882ms
I studied hard the phases of nodejs but I don't understand why a setImmediate
should impact on the results of the interval function.
Do you have some explanations?
Thank you
node.js performance event-loop
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued withsetImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by thesetImmediate()
invocation.
– P3trur0
Nov 23 '18 at 16:10
But I'm looking that the interval result are: 997i++
vs 537i++
withoutsetImmediate
, the timing is ok 1 sec
– Manuel Spigolon
Nov 23 '18 at 16:15
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42
add a comment |
I'm running on node 8.11
this test script:
let end = false;
let i = 0;
setInterval(() => { i++; }).unref();
let k = 0;
async function loop() {
k++
if (end === false)
setImmediate(loop);
}
console.time('test');
loop()
.then(() => {
setTimeout(() => {
end = true;
console.log('interval', i);
console.log('recursion', k);
console.timeEnd('test');
}, 1000);
})
And the output is:
interval 997
recursion 824687
test: 1001.831ms
But, if I comment these two lines:
// if (end === false)
// setImmediate(loop);
The results are:
interval 537
recursion 1
test: 1003.882ms
I studied hard the phases of nodejs but I don't understand why a setImmediate
should impact on the results of the interval function.
Do you have some explanations?
Thank you
node.js performance event-loop
I'm running on node 8.11
this test script:
let end = false;
let i = 0;
setInterval(() => { i++; }).unref();
let k = 0;
async function loop() {
k++
if (end === false)
setImmediate(loop);
}
console.time('test');
loop()
.then(() => {
setTimeout(() => {
end = true;
console.log('interval', i);
console.log('recursion', k);
console.timeEnd('test');
}, 1000);
})
And the output is:
interval 997
recursion 824687
test: 1001.831ms
But, if I comment these two lines:
// if (end === false)
// setImmediate(loop);
The results are:
interval 537
recursion 1
test: 1003.882ms
I studied hard the phases of nodejs but I don't understand why a setImmediate
should impact on the results of the interval function.
Do you have some explanations?
Thank you
node.js performance event-loop
node.js performance event-loop
asked Nov 21 '18 at 12:34
Manuel SpigolonManuel Spigolon
1,61611832
1,61611832
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued withsetImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by thesetImmediate()
invocation.
– P3trur0
Nov 23 '18 at 16:10
But I'm looking that the interval result are: 997i++
vs 537i++
withoutsetImmediate
, the timing is ok 1 sec
– Manuel Spigolon
Nov 23 '18 at 16:15
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42
add a comment |
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued withsetImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by thesetImmediate()
invocation.
– P3trur0
Nov 23 '18 at 16:10
But I'm looking that the interval result are: 997i++
vs 537i++
withoutsetImmediate
, the timing is ok 1 sec
– Manuel Spigolon
Nov 23 '18 at 16:15
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued with
setImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by the setImmediate()
invocation.– P3trur0
Nov 23 '18 at 16:10
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued with
setImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by the setImmediate()
invocation.– P3trur0
Nov 23 '18 at 16:10
But I'm looking that the interval result are: 997
i++
vs 537 i++
without setImmediate
, the timing is ok 1 sec– Manuel Spigolon
Nov 23 '18 at 16:15
But I'm looking that the interval result are: 997
i++
vs 537 i++
without setImmediate
, the timing is ok 1 sec– Manuel Spigolon
Nov 23 '18 at 16:15
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53412160%2fweird-result-testing-operation-per-sec%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53412160%2fweird-result-testing-operation-per-sec%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I am not an expert of Node.js event loop, however here it is stated that " If the poll phase becomes idle and scripts have been queued with
setImmediate()
, the event loop may continue to the check phase rather than waiting". So maybe that milliseconds difference is due to the check phase activity added by thesetImmediate()
invocation.– P3trur0
Nov 23 '18 at 16:10
But I'm looking that the interval result are: 997
i++
vs 537i++
withoutsetImmediate
, the timing is ok 1 sec– Manuel Spigolon
Nov 23 '18 at 16:15
The recursion values are right (because in the second test I don't do that) but this shouldn't impact on setInterval (i think..)
– Manuel Spigolon
Nov 23 '18 at 16:17
interesting find...it replicates in the browser as well, with even smaller numbers for the interval
– mihai
Nov 28 '18 at 13:40
Tried also node 10 and 11 and same behaviour, I'm still investigating using inspector
– Manuel Spigolon
Dec 3 '18 at 20:42