Как эффективно обновить объекты в Javascript - PullRequest
1 голос
/ 30 июля 2011

Я работаю над игрой на javascript для развлечения, где у меня есть массив объектов персонажей.Я периодически делаю проверки полей внутри объектов (например, символов [i] .xpos, символов [i] .ypos и т. Д.).Является ли более эффективным добавить функцию к прототипу класса для обработки перемещения влево и вправо и периодически вызывать ее, или более эффективно, чтобы иметь глобальную функцию, которая регулирует позиции x и y объекта символа?

Спасибо за вашу помощь, ребята!


Редактировать: Спасибо за ваши ответы, ребята.Я постараюсь быть более конкретным.У меня есть одна глобальная функция обновления, которая вызывается с интервалом и содержит кучу кода, который изменяет свойства объекта, например:

globalupdate() {
  characters[i].posx++;
  characters[i].posy++;
  ... and more code like that
}

Было бы быстрее просто написать функцию-прототип вэтот класс и назвать это?Как:

globalupdate() {
   characters[i].update();
}

Спасибо за все быстрые ответы!

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Я только что прочитал статью на эту тему Джона Ресига (автор jQuery ).Исходя из этого, самое важное - не иметь нескольких таймеров (т. Е. Интервалов и тайм-аутов), поскольку существует вероятность конфликта.

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


Редактировать : Правильно ли я понимаю ваше обновление, и это то, что вы хотите знать: заданный блок кода,

{
    object1.<key> = <value> ;
    object2.<key> = <value> ;
    /* ... */
    objectN.<key> = <value> ;
}

и альтернативный блок кода,

{
    object.prototype.change = function( ) { this.<key> = <value> ; } ;

    list = [object1,object2,/* ... */,objectN] ;
    for(i = 0 ; i < list.length ; i++) list[i].change( ) ;

}

какой из них будет выполняться быстрее?

0 голосов
/ 30 июля 2011

Что касается всех вопросов производительности, где для кодирования теста для каждого случая требуется всего 1 минута, попробуйте.

Я думаю, что разница незначительна по сравнению с «видимой» частью обновления, то есть обновлением DOM и т. Д. Также помните, что, вероятно, будут различия в зависимости от используемого браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...