Объекты Javascript против примитивов

В настоящее время я много работаю над ООП Javascript. В частности, я много имею дело с координатами и размерами, и у меня есть много переменных, определенных как объекты, например:

coords = {
    x:10,
    y:15
};

dimensions = {
    width:500,
    height:250
}

Но мне интересно, было бы быстрее / эффективнее указать значения как отдельные, примитивные переменные:

coordX = 10;
coordY = 15;

dimWidth = 500;
dimHeight = 240;

Может ли кто-нибудь вкратце объяснить преимущества / недостатки каждого метода строки переменных? С точки зрения удобства использования объекты мне легче, так как вы можете группировать связанные значения вместе; хотя я так понимаю, что он медленнее. Но это медленнее или занимает больше памяти, чем определение большего количества переменных?

Ваше здоровье.

РЕДАКТИРОВАТЬ: Вау! Я никогда не ожидал такого количества откликов, особенно так быстро! Спасибо всем за ваши ответы.

Кажется, что любые различия в производительности отрицательны, но это применимо только к простым скриптам. У меня есть постоянный цикл, который должен работать с максимально возможным FPS. Каждый цикл использует множество объектных переменных для хранения данных, как указано выше. Так есть ли в этих обстоятельствах потенциальные проблемы с производительностью?


person GreenImp    schedule 04.02.2012    source источник
comment
Я был бы безмерно удивлен, если бы ваше приложение действительно показало какую-либо заметную разницу в производительности между ними.   -  person lonesomeday    schedule 05.02.2012
comment
@ Гвоздь: Вовсе нет. Это вопрос Java, а не JavaScript. Пожалуйста, прочтите внимательнее.   -  person Platinum Azure    schedule 05.02.2012
comment
@FairyLee: это граничит с преждевременной оптимизацией.   -  person outis    schedule 05.02.2012
comment
Почти дубликат массива переменных или отдельных переменных?   -  person outis    schedule 05.02.2012
comment
В некоторой степени связано: stackoverflow.com/questions/8423493/ (я также удалил свои предыдущие комментарии, чтобы освободить место для новых комментариев.)   -  person The Nail    schedule 05.02.2012
comment
@TheNail Приветствую вас за эту ссылку. Отмеченный ответ оказался очень полезным!   -  person GreenImp    schedule 05.02.2012
comment
Чтобы решить проблемы с производительностью, профилируйте сценарий и устраните алгоритмическую неэффективность. Такие незначительные вещи, как этот, следует решать в последнюю очередь и только в том случае, если других улучшений окажется недостаточно, а профилирование предполагает, что это принесет пользу.   -  person outis    schedule 05.02.2012
comment
@outis приветствует ссылку - опять же, очень полезный ресурс! Я собираюсь изучить профилирование с помощью JS, хотя раньше этого не делал.   -  person GreenImp    schedule 05.02.2012


Ответы (2)


Производительность не должна быть проблемой - свойства объявлены в объекте, и для доступа к ним не требуется цепочка прототипов (также движки javascript становятся все более и более производительными в этой области).

Я лично предпочел бы использовать объектно-ориентированный подход в этой ситуации, поскольку он позволяет логически группировать значения, что будет более понятно любым другим разработчикам, которые смотрят на ваш код (и, если вы чем-то похожи на меня, возможно, вы в через пару месяцев раз!).

person Rich O'Kelly    schedule 04.02.2012
comment
Спасибо. В подобных случаях я предпочитаю использовать объекты, так как это «аккуратнее». Я просто пытаюсь выяснить, будет ли какое-либо заметное изменение производительности между разными методами. Ваше здоровье - person GreenImp; 05.02.2012
comment
Не только это, но и в будущем легче расширять объекты, когда строка переменных может стать беспорядочной. - person Jeffrey Sweeney; 05.02.2012
comment
Я пометил это как принятый ответ просто потому, что он объясняет немного больше, чем другой, хотя они заявляют примерно одно и то же. Спасибо всем, кто помогал. - person GreenImp; 05.02.2012

Вы используете то, что лучше всего подходит для решения данной проблемы.

Если в вашем коде есть смысл использовать объект, используйте его. Если переменные имеют больше смысла, используйте их.

person Community    schedule 04.02.2012
comment
Спасибо за ваш ответ, в основном это то, чем я занимаюсь сейчас, но мой сценарий настолько обширен и сильно загружает процессор, поэтому я ищу повышения производительности везде, где это возможно. - person GreenImp; 05.02.2012