Created
October 25, 2022 20:51
-
-
Save Suaz/b5fc47966c9859b2e2e159172a784e7e to your computer and use it in GitHub Desktop.
Get size of a variable in kb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function memorySizeOf(obj) { | |
var bytes = 0 | |
function sizeOf(obj) { | |
if (obj !== null && obj !== undefined) { | |
switch (typeof obj) { | |
case 'number': | |
bytes += 8 | |
break | |
case 'string': | |
bytes += obj.length * 2 | |
break | |
case 'boolean': | |
bytes += 4 | |
break | |
case 'object': | |
var objClass = Object.prototype.toString.call(obj).slice(8, -1) | |
if (objClass === 'Object' || objClass === 'Array') { | |
for (var key in obj) { | |
if (!obj.hasOwnProperty(key)) continue | |
sizeOf(obj[key]) | |
} | |
} else bytes += obj.toString().length * 2 | |
break | |
} | |
} | |
return bytes | |
} | |
function formatByteSize(bytes) { | |
if (bytes < 1024) return bytes + ' bytes' | |
else if (bytes < 1048576) return (bytes / 1024).toFixed(3) + ' KiB' | |
else if (bytes < 1073741824) return (bytes / 1048576).toFixed(3) + ' MiB' | |
else return (bytes / 1073741824).toFixed(3) + ' GiB' | |
} | |
return formatByteSize(sizeOf(obj)) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment