Nodejs/Bun Высокое разрешение SetInterval для <5 мсJavascript

Форум по Javascript
Ответить
Anonymous
 Nodejs/Bun Высокое разрешение SetInterval для <5 мс

Сообщение Anonymous »

Как сделать SetInterval с высоким разрешением в узле с
, в браузере возможно, что только SetInterval < /p>
Я хочу сделать приложение в реальном времени для работы с серийным Скорость 250 Гц
Для этого мне нужно иметь чистые интервалы с продолжительностью ниже 5 мс < /p>
function measure(setTimeout, time) {
let i = 0, a = new Float64Array(10_000), p = Promise.withResolvers();
let start = performance.now();
let lastNow = start;
function loop() {
let now = performance.now();
a[i++] = now - lastNow;
if (now - start > time) {
p.resolve(a.slice(1, i-1).sort().reverse())
} else {
lastNow = now;
setTimeout(loop);
}
}
loop();
return p.promise;
}

Promise.withResolvers ??= (o={})=>Object.assign(o,{promise:new Promise((r,j)=>{o.resolve=r;o.reject=j})})

measure(f => setTimeout(f, 1), 1000).then(a => console.log({
hz: a.length,
max: a[0],
'99%': a[~~(a.length*0.99)],
'95%': a[~~(a.length*0.95)],
'90%': a[~~(a.length*0.90)],
median: a[~~()],
a,
}))
// browser: {hz:216,max:6.3,99%:6.1,95:5.9,90:5.2,median:4.6} - fine
// node: {hz:69,max:16.3,99%:16.1,95:16,90:16.2,median:15.45} - I want better then this
// bun: {hz:61,max:32.3,99%:32.1,95:17.8,90:16.2,median:15.45} - I want better then this


Подробнее здесь: https://stackoverflow.com/questions/794 ... al-for-5ms
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»