Просмотр полной версии : Как ускорить setInterval
vitlance
02.07.2008, 22:20
Такой вопрос... Что если delay у setInterval нужен меньше 1... что делать?
Я заметил такой парадокс что когда идёт setInterval и если вызываеш contextMenu, то сетИнтервал ускоряется раза в 3.. Из за чего это? И как такое ускорение сделать не вызывав контекстМеню?
Что если delay у setInterval нужен меньше 1Зачем?
setInterval и 1 не будет равен =) у него приоритет ниже жем у любого другого кода. Т.е. он будет ждать окончания всех остальных операций чтобы что-то сделать. Если "всего остального" мало, то точности может хватить, ну, так в пределах +-5мс примерно, но, откровенно говоря, рассчитывать на точность интервалов меньше 10мс - ИМХО нет смысла.
vitlance
02.07.2008, 23:18
Зачем?
Чтобы шустрее всё делалось..
Я делаю програму, и перед её началом идет "Инитиализация", (создаётся кучу разных текстур), и всё работает через сетинтервал, и в среднем эта "инитилизация", занимает 1 минуту, что для меня неприемлимо... Надо чтобы шустрее всё делалось
Не... не думаю, что тут сетинтервал как-то поможет =) Ну, точно не ускорит =) Если вы попиксельно текстуры создаете - ничего не поделаешь, наверняка там сотни тысяч операций...
То есть по вашему, таким образом можно ускорить флеш?
Чтобы шустрее всё делалось..
Я делаю програму, и перед её началом идет "Инитиализация", (создаётся кучу разных текстур), и всё работает через сетинтервал, и в среднем эта "инитилизация", занимает 1 минуту, что для меня неприемлимо... Надо чтобы шустрее всё делалось
Делайте больше операций за такт. Только это врядли ускорит процесс. Минимальное время можно достичь, не используя интервалов в принципе.
vitlance
02.07.2008, 23:37
То есть по вашему, таким образом можно ускорить флеш?
Просто я отталкивался от того что при таких действиях как открывание контекст меню, дёрганию мышы, сет интервал начинает идти быстрее почему то, и тогда и возник вопрос если при этих действиях интервал работает быстрее то значит как то можно его ускорить :)
Делайте больше операций за такт. Только это врядли ускорит процесс. Минимальное время можно достичь, не используя интервалов в принципе.
Так флэш просто повиснет :)
Ладно.. Видемо в этой жизни ускорить интервал неполучится
Просто я отталкивался от того что при таких действиях как открывание контекст меню, дёрганию мышы, сет интервал начинает идти быстрее почему тоt = 0;
var txt = this.createTextField ("txt", 0, 10, 10, 100, 50);
function e () {
txt.text = (getTimer () - t);
t = getTimer ();
}
setInterval(e, 1);
Такая простая функция при 31 фпс, у меня в срабатывает в основном каждые 3 мс, иногда 2 и еще реже 1.
Запустите и посмотрите реальную частоту вызовов вашего интервала.
vitlance
02.07.2008, 23:50
А ещё интересно что в Firefoxe, интервалы идут быстрее... От чего это зависит непонятно...
vitlance
02.07.2008, 23:54
t = 0;
var txt = this.createTextField ("txt", 0, 10, 10, 100, 50);
function e () {
txt.text = (getTimer () - t);
t = getTimer ();
}
setInterval(e, 1);
Такая простая функция при 31 фпс, у меня в срабатывает в основном каждые 3 мс, иногда 2 и еще реже 1.
Запустите и посмотрите реальную частоту вызовов вашего интервала.
Частота примерно выглядит так:
5
4
12
11
11
8
3
15
16
4
15
13
3
3
10
2
15
3
11
12
19
13
15
2
12
3
2
10
2
14
3
3
15
17
12
2morrowMan
03.07.2008, 00:03
А ещё интересно что в Firefoxe, интервалы идут быстрее... От чего это зависит непонятно...
Firefox использует FlashPlayer Plugin, а IE FlashPlayer ActiveX Object. Тут и разница.
Частота примерно выглядит так:
5
4
12
11
11
...Я думаю теперь вопрос исчерпан? :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.