Énoncé du problème :
Lorsque vous stockez efficacement un grand nombre d'objets et que vous devez les récupérer à l'aide d'un identifiant numérique long et unique, il est crucial de déterminer la meilleure structure de données : un tableau ou un objet.
Option de tableau :
<code class="javascript">var a = [{id: 29938, name: 'name1'}, {id: 32994, name: 'name1'}];</code>
Pour localiser un objet dans un tableau, une recherche linéaire est requise :
<code class="javascript">function getObject(id) { for (var i=0; i < a.length; i++) { if (a[i].id == id) return a[i]; } }</code>
Option objet :
<code class="javascript">var a = {}; a[29938] = {id: 29938, name: 'name1'}; a[32994] = {id: 32994, name: 'name1'};</code>
Avec un objet, la récupération est directe en fonction de l'ID utilisé comme clé :
<code class="javascript">function getObject(id) { return a[id]; }</code>
Analyse :
En général, les tableaux sont légèrement plus rapides que les objets pour récupérer des éléments individuels, en particulier avec de grands tableaux. En effet, les objets ont des paires clé-valeur, qui nécessitent une surcharge de recherche supplémentaire par rapport à la simple indexation des tableaux.
Résultats des tests de performances (2017) :
Une performance un test mené en 2017 a révélé qu'un tableau est nettement plus rapide qu'un tableau troué et qu'un objet pour récupérer un seul objet.
Tri :
Les performances de tri dépendent de l'algorithme de tri utilisé et le nombre d'éléments. Bien que les tableaux puissent être triés plus efficacement que les objets à l'aide de méthodes intégrées telles que Array.sort(), la différence peut ne pas être significative pour les ensembles de données plus petits.
Conclusion :
Si l'opération principale consiste à récupérer un seul objet en fonction de son ID, un tableau est généralement plus efficace qu'un objet, en particulier pour un grand nombre d'objets. Cependant, si le tri est une exigence fréquente, le choix de la structure des données peut nécessiter des tests et des considérations supplémentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!