Skip to content

Instantly share code, notes, and snippets.

@gkucmierz
Created May 4, 2020 00:06
Show Gist options
  • Save gkucmierz/0669a0223d6b441577f9614a5b0a23bc to your computer and use it in GitHub Desktop.
Save gkucmierz/0669a0223d6b441577f9614a5b0a23bc to your computer and use it in GitHub Desktop.
JSON stringify/parse performance test
// http://instacode.dev/#Y29uc3QgcGVyZlRlc3QgPSAobmFtZSwgY2FsbGJhY2spID0+IHsKCWNvbnN0IGQwID0gK25ldyBEYXRlKCk7CiAgY2FsbGJhY2soKTsKICBjb25zdCBkMSA9ICtuZXcgRGF0ZSgpOwogIGNvbnNvbGUubG9nKGBUZXN0ICR7bmFtZX06ICR7ZDEtZDB9bXNgKTsKfTsKCgpjb25zdCBSRVBTID0gMTA7CmNvbnN0IFNJWkUgPSAxZTU7Cgpjb25zdCBhcnIgPSBbXTsKZm9yIChsZXQgaSA9IDA7IGkgPCBTSVpFOyArK2kpIHsKICBhcnJbaV0gPSB7aSwgcm5kOiBNYXRoLnJhbmRvbSgpfTsKfQpjb25zdCBzdHIgPSBKU09OLnN0cmluZ2lmeShhcnIpOwoKcGVyZlRlc3QoJ3N0cmluZ2lmeScsICgpID0+IHsKICBmb3IgKGxldCBpID0gMDsgaSA8IFJFUFM7ICsraSkgewogIAlKU09OLnN0cmluZ2lmeShhcnIpOwogIH0KfSk7CgpwZXJmVGVzdCgncGFyc2UnLCAoKSA9PiB7CiAgZm9yIChsZXQgaSA9IDA7IGkgPCBSRVBTOyArK2kpIHsKICAJSlNPTi5wYXJzZShzdHIpOwogIH0KfSk7
const perfTest = (name, callback) => {
const d0 = +new Date();
callback();
const d1 = +new Date();
console.log(`Test ${name}: ${d1-d0}ms`);
};
const REPS = 10;
const SIZE = 1e5;
const arr = [];
for (let i = 0; i < SIZE; ++i) {
arr[i] = {i, rnd: Math.random()};
}
const str = JSON.stringify(arr);
perfTest('stringify', () => {
for (let i = 0; i < REPS; ++i) {
JSON.stringify(arr);
}
});
perfTest('parse', () => {
for (let i = 0; i < REPS; ++i) {
JSON.parse(str);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment