Skip to content

Instantly share code, notes, and snippets.

@tricknotes
Created December 5, 2012 10:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tricknotes/4214426 to your computer and use it in GitHub Desktop.
Save tricknotes/4214426 to your computer and use it in GitHub Desktop.
Performance check about object initialization.
var before, after;
var obj, i;
var count = 1000000000;
var t;
console.log('%j', process.versions);
console.log('');
console.log('* initialize');
before = new Date;
for (i = 0; i < count; i++)
obj = {};
after = new Date;
console.log('{}:\n %d ms', after - before);
before = new Date;
for (i = 0; i < count; i++) {
obj = {}; obj.__proto__ = null;
}
after = new Date;
console.log('obj = {};obj.__proto__ = null:\n %d ms', after - before);
console.log('');
console.log('* lookup');
obj = {key: true};
before = new Date;
for (i = 0; i < count; i++)
obj.key = true
after = new Date;
console.log('obj = {key: true}:\n %d ms', after - before);
obj = {key: true};
obj.__proto__ = null;
before = new Date;
for (i = 0; i < count; i++)
obj.key = true
after = new Date;
console.log('obj = {};obj.__proto__ = null:\n %d ms', after - before);
@tricknotes
Copy link
Author

OS: Mac OS X 10.7.5

{"http_parser":"1.0","node":"0.8.15","v8":"3.11.10.25","ares":"1.7.5-DEV","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f"}

* initialize
{}:
  5723 ms
obj = {};obj.__proto__ = null:
  5628 ms

* lookup
obj = {key: true}:
  1666 ms
obj = {};obj.__proto__ = null:
  1084 ms

@tricknotes
Copy link
Author

{"http_parser":"1.0","node":"0.8.15","v8":"3.11.10.25","ares":"1.7.5-DEV","uv":"0.8","zlib":"1.2.3","openssl":"1.0.0f"}

  • initialize
    {}:
    5391 ms
    obj = {};obj.proto = null:
    135251 ms
  • lookup
    obj = {key: true}:
    1445 ms
    obj = {};obj.proto = null:
    1308 ms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment