2016-03-07 6 views
0

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

this.genphysdesc = genphysdesc; 
this.facetype = facetype; 
this.bodytype = bodytype; 
this.haircol = haircol; 
this.gender = gender; 
this.pronA = pronA; 
this.pronB = pronB; 
this.pronC = pronC; 
this.pronD = pronD; 

VS.

В любом случае значения будут содержать строки по 5-35 символов.

Сообщите мне, если это неясно. Спасибо за вашу помощь!

+1

Попробуй. Такая оптимизация производительности попадает прямо в лагерь «преждевременной оптимизации». Даже если есть разница, он, вероятно, будет заметно отличаться в разных браузерах, а разница между браузерами, скорее всего, больше, чем между объектными структурами. Просто сделайте это, однако, лучше всего, и обратитесь к производительности, если есть проблема позже. – RobG

+0

@RobG Спасибо за отзыв! Я должен был упомянуть, что я преобразовываю большое количество массивов в объекты ради рационализации и небольшое, но заметное повышение производительности. То, что я тестировал до сих пор, кажется солидным, но я хотел проверить с кем-то более опытным, чем я, прежде чем зайти слишком далеко по линии и в непредвиденной связи. Я по-прежнему новичок в JS, поэтому отзыв о различиях между браузерами - отличная информация. Я беру это из вашего ответа, что вы не видите какой-либо очевидной причины предпочесть один метод другому? Очень признателен. – corvidia

ответ

0

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

Предполагая, что вы хотите, различия между массивами:

// Hoisting section 
var a = []; 
var propA, propB, propC, propD, propE, propF; 
propA = 1; 
propB = 2; 
propC = 3; 
propD = 4; 
propE = 5; 
propF = 6; 



a.push(propA); 
a.push(propB); 
a.push(propC); 
a.push(propD); 
a.push(propE); 
a.push(propF); 

// vs. 

a = [ propA, propB, propC, propD, propE, propF ]; 

console.log(a); 

Вторая версия только присваивает один раз так его быстрее. Назначение объектов будет одинаковым с другим синтаксисом.

Посмотрите на грузоподъемных:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

Есть некоторые различия в производительности и контрольные показатели для [] в сравнении с нажимного синтаксисом: Is there a reason JavaScript developers don't use Array.push()?

+0

Я подсвечивал разницу, но я отредактировал свой ответ, чтобы выделить подъем, который я связал. –

+0

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

Смежные вопросы