var generate = function (count) { var objects = []; while (count--) { var obj = {}; for (var i in {n:1,e:1,u:1,r:1,s:1,f:1,a:1,d:1,y:1}) { obj[i] = '!!' + Math.random() + '!!'; } objects.push(obj); } return objects; }; var json = { decode : function (text) { return JSON.parse(text); }, encode : function (object) { return JSON.stringify(object); } }; var plain = { decode: function (text) { var contacts = text.split("\\c"); for (var n = 0, len = contacts.length, contactSplit; n < len; n++) { contactSplit = contacts[n].split("\\a"); contacts[n] = {}; contacts[n].n = contactSplit[0]; contacts[n].e = contactSplit[1]; contacts[n].u = contactSplit[2]; contacts[n].r = contactSplit[3]; contacts[n].s = contactSplit[4]; contacts[n].f = contactSplit[5]; contacts[n].a = contactSplit[6]; contacts[n].d = contactSplit[7]; contacts[n].y = contactSplit[8]; } return contacts; }, encode : function (object) { var result = []; for (var i = 0, l = object.length; i < l; i++) { var c = object[i]; result.push([c.n,c.e,c.u,c.r,c.s,c.f,c.a,c.d,c.y].join('\\a')); } return result.join('\\c'); }, }; console.log( json.decode( json.encode(generate(10)))); console.log(plain.decode(plain.encode(generate(10)))); var test = {json : json, plain : plain}; for (var i in test) { var data = test[i].encode(generate(100)); console.time(i); for (var count = 100; count--;) { window['test-' + i] = test[i].decode(data); } console.timeEnd(i); };