Как сделать 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
Nodejs/Bun Высокое разрешение SetInterval для <5 мс ⇐ Javascript
Форум по Javascript
-
Anonymous
1739271946
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79429750/nodejs-bun-high-resolution-setinterval-for-5ms[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия