что занимает больше места: объект с 2 ключами или 2 значения переменных? Как лучше?

Или они практически одинаковые? Лучше ли использовать один или другой, если я знаю, что мне нужно только 2 части информации для функции?

const twoKeyValPairs = {a:1, b:2};

vs

const a = 1;
const b = 2;

person BigDreamz    schedule 08.03.2020    source источник
comment
лучше всего иметь код, за который вам не будет стыдно, если его увидят другие   -  person Mister Jojo    schedule 09.03.2020
comment
Отвечает ли это на ваш вопрос? Занимают ли ссылки на объекты дополнительную память?   -  person 2pha    schedule 09.03.2020
comment
См. второй ответ в связанном выше вопросе ^^   -  person 2pha    schedule 09.03.2020
comment
@ 2pha не совсем, я не спрашиваю об указателях на объект. Я спрашиваю о памяти, которая создается при создании объекта с двумя ключами с целыми числами в качестве значений против двух переменных целых чисел. Я бы предположил, что объект занимает больше места, как я помню, в одном из моих классов C структура занимала 4 или 8 бит в памяти или что-то в этом роде. Мне интересно, создадут ли скобки фиксированное пространство в памяти вместе с любой памятью, которую создают данные внутри.   -  person BigDreamz    schedule 09.03.2020
comment
Объект нуждается в дополнительной обработке, такой как его прототипы, внутренние слоты и дескрипторы его свойств. Даже если используются скрытые классы, они по крайней мере занимают дополнительный указатель в заголовке объекта. Не говоря уже о дополнительных накладных расходах на управление памятью в куче. Возможно, escape-анализ и оптимизация могут сделать их эквивалентными, но я не могу представить себе дополнительную переменную, занимающую больше места, чем объектный подход.   -  person Jin-oh Kang    schedule 09.03.2020
comment
Даже если и лексическое окружение, и объекты каким-то образом поддерживаются хэш-таблицами, большее количество хеш-таблиц будет означать большее количество сегментов, которые, в свою очередь, потребляют больше памяти. Если вам нужен определенный ответ, вам следует использовать профилировщик с вашим собственным движком JavaScript.   -  person Jin-oh Kang    schedule 09.03.2020


Ответы (1)


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

Производительность JavaScript: несколько переменных или один объект?

person Rahul Jain    schedule 09.03.2020