Je sais que je peux obtenir la taille d'un objet JSON en octets en utilisant JSON.parse (data) .length .
// UTF-8 etc. peut être ignoré pour l'instant, mais l'analyse prend du temps pour des données énormes dont je ne veux pas.
Existe-t-il un moyen d'obtenir sa taille en Mo sans la transformer en chaîne?
3 Réponses :
Il n'y a pas de moyen natif de calculer la taille d'un objet en Javascript mais il existe un module node qui vous donne la taille d'un objet en octets. object-sizeof
Ce serait un exemple de ce dont vous avez besoin: Â Â
var sizeof = require('object-sizeof');
// 2B per character, 6 chars total => 12B
console.log(`${sizeof({abc: 'def'})/1024} MB`);
Nous avons les options suivantes:
Pour des raisons de sécurité, Javascript n'est pas autorisé à accéder ou à modifier les informations sur l'appareil, par conséquent, déterminer exactement combien d'octets un objet occupe devrait être impossible.
Cela étant dit, la commande Javascript suivante existe (dans chrome uniquement):
window.performance.memory
Ceci renvoie un objet avec la quantité d'octets que la fenêtre peut utiliser au maximum, la quantité d'octets utilisés, y compris l'espace libre, et la quantité d'octets réellement utilisé. Vous pourriez, en théorie, utiliser cela pour déterminer la quantité d'octets utilisée avant et après la création d'un objet, et calculer la différence. Le projet memory-stats par exemple utilise cette commande.
Cependant, les valeurs de cet objet ne changent jamais sauf si chrome a été lancé avec l'indicateur "--enable-precise-memory-info". Vous ne pouvez donc pas utiliser cette commande dans une application (de production) (la documentation MDN indique le même ). Vous ne pouvez approcher la quantité de mémoire qu'un objet occupe en comptant toutes les chaînes et les nombres et en multipliant cela par la quantité d'octets qu'une chaîne occupe habituellement (c'est ce que le object-sizeof library does).
Si vous êtes simplement intéressé par la taille de l'objet et que vous ne souhaitez pas utiliser cette information dans une application de production, vous pouvez simplement le faire en créant un chronologie enregistrement dans les outils de développement Chrome.
Double possible de obtenir la taille de l'objet json
Que voulez-vous dire par «taille», que voulez-vous savoir? nombre d'éléments de l'objet?
Non, ce n'est pas en double, je veux savoir combien de mémoire est nécessaire pour contenir cet objet en Mo
Double possible de Comment connaître la taille de la réponse dans une requête ajax a>
Si vous avez besoin de la taille de l'objet uniquement pour votre propre connaissance et ne pas l'utiliser dans le code, essayez de chercher dans Chrome Heap Profiler .
J'en ai besoin au moment de l'exécution pour décider du prochain plan d'action
@Arvind Si ma réponse vous a été utile, vous pouvez l'accepter ou la qualifier afin que d'autres utilisateurs ayant un problème similaire puissent trouver une solution plus rapidement.