Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var benchmark = require("./benchmark");
- var immutable = require("immutable");
- function generateKeys(counter) {
- var keys = [];
- while (counter--) {
- keys.splice(Math.floor(Math.random() * keys.length), 0, "foo" + counter);
- }
- return keys;
- }
- function copy(o) {
- var p = {};
- for (var s in o) {
- p[s] = o[s];
- }
- return p;
- }
- var suites = {};
- suites["object get"] = function (counter) {
- var keys = generateKeys(counter);
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- benchmark.time("Mutable object", function () {
- o[keys[0]];
- });
- })();
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- Object.freeze(o);
- benchmark.time("Frozen object", function () {
- o[keys[0]];
- });
- })();
- ;(function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- benchmark.time("Immutable-js Map", function () {
- o.get(keys[0]);
- });
- })();
- };
- suites["object insert"] = function (counter) {
- var keys = generateKeys(counter);
- benchmark.time("Mutable object", function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- });
- benchmark.time("Mutable object copying", function () {
- var o = {};
- keys.forEach(function (key) {
- var p = copy(o);
- p[key] = true;
- o = p;
- });
- });
- benchmark.time("Frozen object copying", function () {
- var o = {};
- Object.freeze(o);
- keys.forEach(function (key) {
- var p = copy(o);
- p[key] = true;
- Object.freeze(p);
- o = p;
- });
- });
- benchmark.time("Immutable-js Map", function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- });
- benchmark.time("Immutable-js Map Transient", function () {
- var o = immutable.Map();
- o = o.withMutations(function (o) {
- keys.forEach(function (key) {
- o.set(key, true);
- });
- });
- });
- };
- suites["object remove"] = function (counter) {
- var keys = generateKeys(counter);
- benchmark.time("Mutable object", function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- keys.forEach(function (key) {
- delete o[key];
- });
- });
- benchmark.time("Mutable object copying", function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- keys.forEach(function (key) {
- var p = copy(o);
- delete p[key];
- o = p;
- });
- });
- benchmark.time("Frozen object copying", function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- Object.freeze(o);
- keys.forEach(function (key) {
- var p = copy(o);
- delete p[key];
- Object.freeze(p);
- o = p;
- });
- });
- benchmark.time("Immutable-js Map", function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- keys.forEach(function (key) {
- o = o.remove(key);
- });
- });
- benchmark.time("Immutable-js Map Transient", function () {
- var o = immutable.Map();
- o = o.withMutations(function (o) {
- keys.forEach(function (key) {
- o.set(key, true);
- });
- });
- o = o.withMutations(function (o) {
- keys.forEach(function (key) {
- o.remove(key);
- });
- });
- });
- };
- suites["object update"] = function (counter) {
- var keys = generateKeys(counter);
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- benchmark.time("Mutable object", function () {
- keys.forEach(function (key) {
- o[key] = false;
- });
- });
- })();
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- benchmark.time("Mutable object copying", function () {
- keys.forEach(function (key) {
- var p = copy(o);
- p[key] = false;
- o = p;
- });
- });
- })();
- ;(function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- benchmark.time("Immutable-js Map", function () {
- var p = o;
- keys.forEach(function (key) {
- p = p.set(key, false);
- });
- });
- })();
- ;(function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- benchmark.time("Immutable-js Map Transient", function () {
- o.withMutations(function (o) {
- keys.forEach(function (key) {
- o.set(key, false);
- });
- });
- });
- })();
- };
- suites["record"] = function (counter) {
- var keys = generateKeys(counter);
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- benchmark.time("Mutable object", function () {
- o[keys[0]] = false;
- });
- })();
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- benchmark.time("Mutable object copying", function () {
- var p = copy(o);
- p[keys[0]] = false;
- });
- })();
- ;(function () {
- var o = {};
- keys.forEach(function (key) {
- o[key] = true;
- });
- Object.freeze(o);
- benchmark.time("Frozen object copying", function () {
- var p = copy(o);
- p[keys[0]] = false;
- Object.freeze(p);
- });
- })();
- ;(function () {
- var o = immutable.Map();
- keys.forEach(function (key) {
- o = o.set(key, true);
- });
- benchmark.time("Immutable-js Map", function () {
- o.set(keys[0], false);
- });
- })();
- };
- var keys = 1;
- //suites["object get"](keys);
- //suites["object insert"](keys);
- //suites["object remove"](keys);
- //suites["object update"](keys);
- suites["record"](keys);
- benchmark.run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement