En PHP, le tableau est un type de données très courant et une structure de données très importante dans le traitement des données. Lorsqu'ils utilisent des baies, les utilisateurs se concentrent souvent sur leurs performances et leur flexibilité. Cependant, de nombreux développeurs ne connaissent pas les principes sous-jacents de mise en œuvre des matrices, ni la quantité de mémoire qu'elles occupent. Cet article donnera aux lecteurs une introduction détaillée à l'utilisation de la mémoire des tableaux PHP.
Tout d’abord, nous devons comprendre comment les tableaux sont implémentés en PHP. Selon la documentation officielle PHP, il existe deux implémentations sous-jacentes des tableaux PHP : les tables de hachage et les tableaux ordonnés. Une table de hachage est une structure de données basée sur un tableau, et l'indice du tableau peut être n'importe quel entier ou chaîne. Les tables de hachage de tableaux PHP utilisent des algorithmes de hachage pour rechercher ou insérer rapidement une paire clé-valeur.
Il existe une structure zval implémentée en langage C au bas du tableau PHP. Cette structure est similaire à un conteneur de variables, utilisé pour stocker les variables PHP. Pour les tableaux PHP, un zval correspond à un élément du tableau. Une table de hachage est implémentée sous la forme d'un tableau de pointeurs de structure zval. Plus précisément, chaque élément du tableau contient deux structures zval, une pour stocker la clé et une pour stocker la valeur. Par conséquent, l'empreinte mémoire d'un tableau PHP inclut l'espace mémoire pour les clés et les valeurs, ainsi que l'espace mémoire pour le tableau de pointeurs utilisé pour stocker la table de hachage.
Alors, comment calculer l'utilisation de la mémoire d'un tableau PHP ? Nous pouvons utiliser le code suivant pour tester l'utilisation de la mémoire d'un tableau simple :
$data = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); echo memory_get_usage(true);
L'exécution du code ci-dessus affichera un entier indiquant la taille de la mémoire actuellement utilisée par le script PHP. Si vous appelez memory_get_usage()
une fois avant la sortie, vous pouvez obtenir la taille de la mémoire consommée par l'exécution du script elle-même. Si vous exécutez l'intégralité du script et appelez à nouveau memory_get_usage()
, vous pouvez obtenir la taille de la mémoire occupée par le processus PHP. La différence entre ces deux valeurs est la taille de l'espace mémoire alloué au tableau lors de l'exécution de ce script. memory_get_usage()
,则可以得到脚本执行本身消耗的内存大小。如果在运行完整个脚本,再调用一次 memory_get_usage()
,则可以得到 PHP 进程所占用的内存大小。在这两个值之间的差值就是本次脚本执行过程中分配到数组的内存空间大小了。
例如,在我的电脑上,执行以上代码得到输出值为:4096。这意味着这个简单数组占用了 4096 个字节或 4 KB 内存空间。但是需要注意的是,这个值还包括其他的 PHP 数据类型所占用的内存空间,例如字符串、数字、对象等,因此这个值并不完全准确。
如果想要更准确地计算 PHP 数组所占用的内存空间,我们可以借助 PHP 的内置函数 memory_get_usage()
和 serialize()
。serialize()
memory_get_usage()
et serialize()
. La fonction serialize()
peut sérialiser une variable PHP dans une chaîne. Cette chaîne contient des informations telles que le nom de la variable, le type de données et le contenu. Nous pouvons estimer la taille mémoire occupée par un tableau PHP en soustrayant la longueur de la variable d'origine de la longueur de la chaîne sérialisée. Voici un exemple de code :
$data = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); $size = strlen(serialize($data)) - strlen(var_export($data, true)); echo $size;
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!