Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
feature
nanotimer
is used to ensure accurate timing in timers, at the cost of increased cpu usage.@mint-dewit can you remember any justification for using nanotimer over regular nodejs timers? 84482ca I can't find anything in asana or the github issues that give an explanation
use
setTimeout
instead ofnanotimer
.In my testing, this gave accurate enough results. And as we run this timer in a worker thread, there shouldnt be much/any contention on cpu time within the thread. It is possible that the timer callback will be late if overall system cpu usage is high, but I am not sure if nanotimer would do this much better, as it will be compounding the cpu starvation with its spin loop, and it still relies on the event loop running to run the next iteration.
Testing shows
setTimeout
is able to pretty accurately fire after short periods. This will improve performance, as nanotimer spins the cpu to hit its target. Tested using a variation of setTimeout Calling Callback Too Early nodejs/node#26578 (comment)This could probably do with some more stress testing in a production like environment to ensure it doesnt cause any issues in a real environment.