![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Здравствуйте.
Долго думал, как назвать, а как вышло, так вышло =) Собственно, ситуация: Есть игра, онлайновая, принцип ее работы заключается в том, что каждые 3 секунды она конектится к серверу, получает от него какие-то данные, и после соответственно реагирует. Проблема заключается в том, что именно в момент сразу после получения данных получается "пик", в определенных ситуациях игра может загрузить процессор на 100% (ну и дальше вылетают ошибки, падает эксплорер и все в том же духе). К сожалению переделать эту логику нельзя по коммерческим причинам. Но нужно как-нибудь изгалиться, чтобы все-таки работало лучше... =) Я думал попробовать разбить выполнение функций setInterval'ом, но не уверен, что это хороший вариант, и был бы рад услышать мнения, возможно, другие пути решения. Вот, пример того, что я имею в виду: Это то, что есть var itr;
function a(){
itr = setInterval(b, 100);
}
function b(){
clearInterval(itr);
itr = setInterval(c, 100);
}
function c(){};
К сожалению работы такого плана будет много, а времени на эксперименты - как обычно. Поэтому и спрашиваю =) Заранее спасибо за любые ответы.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 24
|
так что конкретно забивает процессор ?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Время выполнения каждой итерации останется таким же, как если бы их выполнять сразу друг за другом. Паузы приведут лишь к увеличению времени. Т.е. общее время = время выполнения+время простоя. А вообще, судя «что каждые 3 секунды она конектится к серверу» — значит проект был построен изначально неверно и нужно было использовать сокет-сервер.
|
|
|||||
|
Modus ponens
|
К сожалению переписывать весь код игры не представляется возможным, как я уже говорил, из коммерческих соображений. Были причины не использовать сокетное соединение из-за того, что для этого нужно было бы задействовать порт, который с большой долей вероятности будет просто закрыт проксей\фаерволом (а конечный пользователь, предположительно, не умеет\не может сам настраивать свое подключение к сети).
Дело еще и в том, что в игре есть довольно много анимации, как выяснилось, она очень ресурсоемкая. Так вот идея была в том, чтобы, по крайней мере, разделить по времени анимацию и рассчеты. Да, время выполнения в данном случае не критично (в паузах между подключениями практически ничего не происходит). Т.е. задача снять нагрузку с процессора, возможно, за счет увеличения времени выполнения.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 14.02.2007 в 15:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|