如此而来,NULL仅仅是少一个赋值 4 bytesBasé sur le type zval de php 5.6 (la structure a changé dans PHP 7)
rrreee
La valeur du type de
zend_uchar type peut être
rrreee
PHP distingue le type de variables en fonction du type🎜
Conclusion
🎜Donc null n'a aucun avantage particulier pour php par rapport à bool/long🎜
Aucun avantage
🎜La variable null signifie que zvalue_value value n'a pas besoin de se voir attribuer une valeur. Par rapport à String et Array, qui nécessitent une grande quantité de mémoire. Cela dit, il présente toujours certains avantages, mais par rapport à LONG et BOOL, cet avantage en termes de performances peut fondamentalement être ignoré. comme suit : 🎜
Qu'est-ce que zVal
🎜Aussi petits qu'une valeur booléenne, aussi grands qu'un tableau composite, dans l'implémentation principale de php, ils constituent tous la structure zVal du langage C. Pour résumer, c'est l'instruction PHP suivante : 🎜
rrreee
🎜Les variables ci-dessus, lorsque /usr/bin/php est exécuté sur cette ligne, seront converties en valeur de la structure zVal et du type en mémoire Cela a été expliqué ci-dessus, et maintenant nous allons expliquer comment sa valeur sera stockée, 🎜
La structure de la valeur zvalue_value
🎜La valeur de la variable PHP est stockée dans la variable zvalue_value value, où la structure de zvalue_value est la suivante : 🎜
rrreee
🎜union est une union en langage C, ce qui signifie qu'un seul membre prendra effet à la fois. Sa caractéristique est que la longueur de 🎜mémoire🎜=🎜la longueur. du membre le plus long🎜 . Les membres utilisés par les variables PHP sont les suivants : 🎜
rrreee
🎜🎜L'implémentation de Object, Resource et Array sera très compliquée et n'est pas abordée dans cet article. Pour plus de détails, veuillez consulter le. hyperlien en bas du texte. 🎜
🎜Selon le tableau ci-dessus, après avoir défini type = IS_NULL sur une variable de type NULL, il n'est pas nécessaire d'attribuer une valeur et 0/ false Assignation Après avoir défini type = IS_BOOL / IS_LONG, ajoutez une affectation supplémentaire value.lval = 0; : 🎜
🎜Cependant, que le membre dans value reçoive une valeur ou non, la zvalue_value value 🎜doit toujours occuper la mémoire 🎜, 🎜
🎜De cette façon, NULL n'est qu'un processus de moins d'attribution de 4 octets de mémoire, mais du point de vue des processeurs modernes, 🎜cet avantage peut être ignoré🎜. 🎜
🎜Veuillez consulter http://www.php-internals.com/...🎜 pour plus de détails
根据
php 5.6
的zval
类型(PHP 7
中结构有变化)zend_uchar type
的type
的值可以为PHP是根据
type
来区分变量的类型结论
所以
null
对php
来说,与bool
/long
对比, 并没有什么特殊的优势没有优势
null
变量,表示zvalue_value value
无需赋值,相比String
、Array
需要申请大量内存的操作来说,还是具备一定的优势,但是对比LONG
、BOOL
来说,这点性能优势基本可以忽略,解释如下:zVal 是什么
小到一个bool值,大到一个复合数组,在
php
核心实现中,都是C语言的zVal结构
。归纳起来,也就是如下PHP声明:
以上变量,在
/usr/bin/php
执行到这行时,都会在内存中转化为zVal结构
,type
的值上面已经讲解过,下面讲解其值将如何存储,zvalue_value value
的结构PHP变量的值存储在
zvalue_value value
变量中,其中zvalue_value
的结构如下:union
在C语言里面是一个联合体
,表示一次只会一个成员生效,其特点是内存的长度=最长的那个成员长度。PHP变量使用的成员如下:
根据上表,
NULL
类型的变量在设置type = IS_NULL
之后,而无需赋值value
而
0/false
赋值在设置type = IS_BOOL / IS_LONG
之后,再多一句赋值value.lval = 0;
的操作:然而不论
value
中的成员
是否赋值,zvalue_value value
都是需要占用内存的,如此而来,
NULL
仅仅是少一个赋值4 bytes
Basé sur le typezval
dephp 5.6
(la structure a changé dansPHP 7
) rrreee La valeur dutype
dezend_uchar type
peut êtrerrreee
PHP distingue le type de variables en fonction dutype
🎜Conclusion
🎜Doncnull
n'a aucun avantage particulier pourphp
par rapport àbool
/long
🎜Aucun avantage
🎜La variablenull
signifie quezvalue_value value
n'a pas besoin de se voir attribuer une valeur. Par rapport àString
etArray
, qui nécessitent une grande quantité de mémoire. Cela dit, il présente toujours certains avantages, mais par rapport àLONG
etBOOL
, cet avantage en termes de performances peut fondamentalement être ignoré. comme suit : 🎜Qu'est-ce que zVal
🎜Aussi petits qu'une valeur booléenne, aussi grands qu'un tableau composite, dans l'implémentation principale dephp
, ils constituent tous lastructure zVal
du langage C.Pour résumer, c'est l'instruction PHP suivante : 🎜 rrreee 🎜Les variables ci-dessus, lorsque
/usr/bin/php
est exécuté sur cette ligne, seront converties en valeur de lastructure zVal
et dutype
en mémoire Cela a été expliqué ci-dessus, et maintenant nous allons expliquer comment sa valeur sera stockée, 🎜La structure de la
🎜La valeur de la variable PHP est stockée dans la variablevaleur zvalue_value
zvalue_value value
, où la structure dezvalue_value
est la suivante : 🎜 rrreee 🎜union
est uneunion
en langage C, ce qui signifie qu'un seul membre prendra effet à la fois. Sa caractéristique est que la longueur de 🎜mémoire🎜=🎜la longueur. du membre le plus long🎜 .Les membres utilisés par les variables PHP sont les suivants : 🎜 rrreee 🎜🎜L'implémentation de
Object
,Resource
etArray
sera très compliquée et n'est pas abordée dans cet article. Pour plus de détails, veuillez consulter le. hyperlien en bas du texte. 🎜 🎜Selon le tableau ci-dessus, après avoir définitype = IS_NULL
sur une variable de typeNULL
, il n'est pas nécessaire d'attribuer unevaleur
et
0/ false
Assignation Après avoir définitype = IS_BOOL / IS_LONG
, ajoutez une affectation supplémentairevalue.lval = 0;
: 🎜 🎜Cependant, que lemembre
dansvalue
reçoive une valeur ou non, lazvalue_value value
🎜doit toujours occuper la mémoire 🎜, 🎜 🎜De cette façon,NULL
n'est qu'un processus de moins d'attribution de4 octets
de mémoire, mais du point de vue des processeurs modernes, 🎜cet avantage peut être ignoré🎜. 🎜 🎜Veuillez consulter http://www.php-internals.com/...🎜 pour plus de détailsIl peut être ignoré dans les projets réels