@fromjs/backend
Version:
36 lines (32 loc) • 1.02 kB
text/typescript
// Show slow JSON.parse calls in the trace
const nativeParse = JSON.parse;
JSON.parse = function (json) {
const shouldTrace = typeof json === "string" && json.length > 40000;
let start = new Date();
let ret = nativeParse.apply(this, arguments as any);
if (shouldTrace) {
const duration = new Date().valueOf() - start.valueOf();
if (duration > 50) {
console.log(
"JSON.parse took " + duration + "ms",
(json || "").slice(0, 100).replace(/\n/g, " "),
Error("Timing").stack!.split("\n").slice(1, 4).join("\n")
);
}
}
return ret;
};
const nativeStringify = JSON.stringify;
JSON.stringify = function () {
let start = new Date();
const ret = nativeStringify.apply(JSON, arguments as any);
let duration = new Date().valueOf() - start.valueOf();
if (duration > 50) {
console.log(
"JSON.stringify took " + duration + "ms",
(ret || "").slice(0, 100),
Error("Timing").stack!.split("\n").slice(1, 4).join("\n")
);
}
return ret;
};