PDA

Просмотр полной версии : Как ускорить setInterval


vitlance
02.07.2008, 22:20
Такой вопрос... Что если delay у setInterval нужен меньше 1... что делать?

Я заметил такой парадокс что когда идёт setInterval и если вызываеш contextMenu, то сетИнтервал ускоряется раза в 3.. Из за чего это? И как такое ускорение сделать не вызывав контекстМеню?

iNils
02.07.2008, 22:31
Что если delay у setInterval нужен меньше 1Зачем?

wvxvw
02.07.2008, 22:48
setInterval и 1 не будет равен =) у него приоритет ниже жем у любого другого кода. Т.е. он будет ждать окончания всех остальных операций чтобы что-то сделать. Если "всего остального" мало, то точности может хватить, ну, так в пределах +-5мс примерно, но, откровенно говоря, рассчитывать на точность интервалов меньше 10мс - ИМХО нет смысла.

vitlance
02.07.2008, 23:18
Зачем?
Чтобы шустрее всё делалось..

Я делаю програму, и перед её началом идет "Инитиализация", (создаётся кучу разных текстур), и всё работает через сетинтервал, и в среднем эта "инитилизация", занимает 1 минуту, что для меня неприемлимо... Надо чтобы шустрее всё делалось

wvxvw
02.07.2008, 23:25
Не... не думаю, что тут сетинтервал как-то поможет =) Ну, точно не ускорит =) Если вы попиксельно текстуры создаете - ничего не поделаешь, наверняка там сотни тысяч операций...

iNils
02.07.2008, 23:28
То есть по вашему, таким образом можно ускорить флеш?

etc
02.07.2008, 23:28
Чтобы шустрее всё делалось..

Я делаю програму, и перед её началом идет "Инитиализация", (создаётся кучу разных текстур), и всё работает через сетинтервал, и в среднем эта "инитилизация", занимает 1 минуту, что для меня неприемлимо... Надо чтобы шустрее всё делалось

Делайте больше операций за такт. Только это врядли ускорит процесс. Минимальное время можно достичь, не используя интервалов в принципе.

vitlance
02.07.2008, 23:37
То есть по вашему, таким образом можно ускорить флеш?

Просто я отталкивался от того что при таких действиях как открывание контекст меню, дёрганию мышы, сет интервал начинает идти быстрее почему то, и тогда и возник вопрос если при этих действиях интервал работает быстрее то значит как то можно его ускорить :)

Делайте больше операций за такт. Только это врядли ускорит процесс. Минимальное время можно достичь, не используя интервалов в принципе.
Так флэш просто повиснет :)

Ладно.. Видемо в этой жизни ускорить интервал неполучится

iNils
02.07.2008, 23:49
Просто я отталкивался от того что при таких действиях как открывание контекст меню, дёрганию мышы, сет интервал начинает идти быстрее почему то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. Тут и разница.

iNils
03.07.2008, 00:08
Частота примерно выглядит так:

5
4
12
11
11
...Я думаю теперь вопрос исчерпан? :)