[javascript] 객체의 동적 프로퍼티와 정적 프로퍼티의 메모리 사용량 비교

JavaScript에서 객체를 생성할 때 동적으로 프로퍼티를 추가하는 방법과 정적으로 프로퍼티를 선언하는 방법은 메모리 사용 측면에서 어떤 차이가 있는지 비교해보겠습니다.

동적 프로퍼티

동적으로 프로퍼티를 추가하는 방법은 객체가 생성된 이후에 . 연산자나 []를 통해 새로운 프로퍼티를 추가하는 것을 말합니다. 이 방법은 유연하게 객체에 새로운 프로퍼티를 추가할 수 있는 장점이 있지만, 프로퍼티가 동적으로 추가되어 객체의 형태가 변할 수 있습니다.

let dynamicObject = {};
dynamicObject.prop1 = 'value1';
dynamicObject['prop2'] = 'value2';

정적 프로퍼티

정적으로 프로퍼티를 선언하는 방법은 객체를 생성하는 시점에 프로퍼티를 함께 정의하는 것을 말합니다. 이 방법은 객체의 형태가 고정되어 있어 변화가 적고, 프로퍼티의 이름과 값을 미리 알고 있는 경우에 유용합니다.

let staticObject = {
  prop1: 'value1',
  prop2: 'value2'
};

메모리 사용량 비교

동적 프로퍼티를 사용하는 객체와 정적 프로퍼티를 사용하는 객체를 생성하고 메모리 사용량을 비교해보겠습니다.

const dynamicObject = {};
dynamicObject.prop1 = 'value1';
dynamicObject['prop2'] = 'value2';

const staticObject = {
  prop1: 'value1',
  prop2: 'value2'
};

console.log('Dynamic Object 메모리 사용량:', JSON.stringify(dynamicObject).length);
console.log('Static Object 메모리 사용량:', JSON.stringify(staticObject).length);

위의 예제에서는 JSON.stringify() 함수를 사용하여 객체를 문자열로 변환한 후 그 길이를 측정하여 메모리 사용량을 비교합니다.

결과

동적으로 프로퍼티를 추가하는 방식은 객체가 생성되고 프로퍼티가 추가될 때마다 메모리에 동적으로 공간을 할당하는 반면, 정적으로 프로퍼티를 선언하는 방식은 객체가 생성될 때 한 번에 모든 프로퍼티에 대한 메모리가 할당됩니다. 따라서, 정적 프로퍼티를 사용하는 객체가 용량이 더 크고, 메모리를 더 많이 사용하는 경향이 있습니다.

따라서, 메모리 사용량을 고려해야 하는 상황이라면 객체의 프로퍼티를 미리 알고 있는 경우, 정적 프로퍼티를 사용하는 것이 메모리를 더 효율적으로 관리할 수 있는 방법일 수 있습니다.

참고자료: