Tanaki
Tanaki

Reputation: 2635

JavaScript 'var' Data/Object Sizes

Does JavaScript optimize the size of variables stored in memory? For instance, will a variable that has a boolean value take up less space than one that has an integer value?

Basically, will the following array:

var array = new Array(8192);
for (var i = 0; i < array.length; i++)
  array[i] = true;

be any smaller in the computer's memory than:

var array = new Array(8192);
far (var i = 0; i < array.length; i++)
  array[i] = 9;

Upvotes: 2

Views: 1990

Answers (2)

vishakvkt
vishakvkt

Reputation: 864

Well, js has only one number type, which is a 64-bit float. Each character in a string is 16 bits ( src: douglas crockford's , javascript the good parts ). Handling of bools is probably thus interpreter implementation specific. if I remember correctly though, the V8 engine surely handles the 'Boolean' object as a 'c bool'.

Upvotes: 0

Cecchi
Cecchi

Reputation: 1535

Short answer: Yes.

Boolean's generally (and it will depend on the user agent and implementation) will take up 4 bytes, while integer's will take up 8.

Check out this other StackOverflow question to see how some others managed to measure memory footprints in JS: JavaScript object size

Edit: Section 8.5 of the ECMAScript Spec states the following:

The Number type has exactly 18437736874454810627 values, representing the doubleprecision 64-bit format IEEE 754 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic

... so all numbers should, regardless of implementation, be 8 bytes.

Upvotes: 1

Related Questions