如此而来,NULL仅仅是少一个赋值 4 bytes를 기반으로 합니다.
php 5.6의 zval 유형 기반(PHP 7에서는 구조가 변경됨)
으아아아
zend_uchar 유형의 type 값은
일 수 있습니다.
으아아아
PHP는 유형을 기준으로 변수 유형을 구별합니다🎜
결론
🎜그래서 null은 bool/long🎜에 비해 php에 특별한 이점이 없습니다.
이점 없음
🎜null 변수는 zvalue_value 값에 값을 할당할 필요가 없음을 의미합니다. String 및 Array와 비교할 때, 많은 양의 메모리 애플리케이션이 필요합니다. 즉, 여전히 특정 장점이 있지만 LONG 및 BOOL과 비교할 때 이러한 성능 이점은 기본적으로 무시될 수 있습니다. 다음과 같습니다: 🎜
zVal이란 무엇입니까
🎜부울 값 만큼 작은 것, 복합 배열만큼 큰 것, php의 핵심 구현에서는 모두 C 언어의 zVal 구조입니다. 요약하면 다음과 같은 PHP 문입니다: 🎜
으아아아
🎜위 변수들은 이 줄에 /usr/bin/php가 실행되면 zVal 구조체와 type의 값으로 변환됩니다. 메모리에 위에서 설명했고 이제 그 값이 어떻게 저장되는지 설명하겠습니다. 🎜
zvalue_value 값
의 구조
🎜PHP 변수의 값은 zvalue_value 변수에 저장되며, 여기서 zvalue_value의 구조는 다음과 같습니다. 🎜
으아아아
🎜union은 C 언어의 union으로, 한 번에 하나의 멤버만 적용된다는 것을 의미합니다. 그 특징은 🎜memory🎜의 길이=🎜길이입니다. 가장 긴 멤버🎜 . PHP 변수가 사용하는 멤버는 다음과 같습니다: 🎜
으아아아
🎜🎜Object, Resource 및 Array 구현은 매우 복잡하므로 이 문서에서는 다루지 않습니다. 자세한 내용은 다음을 확인하세요. 텍스트 하단의 하이퍼링크. 🎜
🎜위 표에 따르면 type = IS_NULL을 NULL 유형의 변수로 설정한 후에는 값을 할당할 필요가 없습니다. 및 0/ false 할당 type = IS_BOOL / IS_LONG을 설정한 후 value.lval = 0; 할당을 하나 더 추가합니다. 🎜
🎜그러나 value의 member에 값이 할당되었는지 여부에 관계없이 zvalue_value 값은 🎜메모리를 점유해야 합니다🎜, 🎜
🎜이런 식으로 NULL은 4바이트 메모리를 할당하는 과정 중 하나가 줄어든 것에 불과하지만 최신 CPU의 관점에서 보면 🎜이러한 장점은 무시될 수 있습니다🎜. 🎜
🎜자세한 내용은 http://www.php-internals.com/...🎜을 참조하세요.
根据
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
를 기반으로 합니다.php 5.6
의zval
유형 기반(PHP 7
에서는 구조가 변경됨) 으아아아zend_uchar 유형
의type
값은일 수 있습니다. 으아아아
PHP는유형
을 기준으로 변수 유형을 구별합니다🎜결론
🎜그래서null
은bool
/long
🎜에 비해php
에 특별한 이점이 없습니다.이점 없음
🎜null
변수는zvalue_value 값
에 값을 할당할 필요가 없음을 의미합니다.String
및Array
와 비교할 때, 많은 양의 메모리 애플리케이션이 필요합니다. 즉, 여전히 특정 장점이 있지만LONG
및BOOL
과 비교할 때 이러한 성능 이점은 기본적으로 무시될 수 있습니다. 다음과 같습니다: 🎜zVal이란 무엇입니까
🎜부울 값 만큼 작은 것, 복합 배열만큼 큰 것,php
의 핵심 구현에서는 모두 C 언어의zVal 구조
입니다.요약하면 다음과 같은 PHP 문입니다: 🎜 으아아아 🎜위 변수들은 이 줄에
/usr/bin/php
가 실행되면zVal 구조체
와type
의 값으로 변환됩니다. 메모리에 위에서 설명했고 이제 그 값이 어떻게 저장되는지 설명하겠습니다. 🎜zvalue_value 값
zvalue_value
변수에 저장되며, 여기서zvalue_value
의 구조는 다음과 같습니다. 🎜 으아아아 🎜union
은 C 언어의union
으로, 한 번에 하나의 멤버만 적용된다는 것을 의미합니다. 그 특징은 🎜memory🎜의 길이=🎜길이입니다. 가장 긴 멤버🎜 .PHP 변수가 사용하는 멤버는 다음과 같습니다: 🎜 으아아아 🎜🎜
Object
,Resource
및Array
구현은 매우 복잡하므로 이 문서에서는 다루지 않습니다. 자세한 내용은 다음을 확인하세요. 텍스트 하단의 하이퍼링크. 🎜 🎜위 표에 따르면type = IS_NULL
을NULL
유형의 변수로 설정한 후에는값
을 할당할 필요가 없습니다.및
0/ false
할당type = IS_BOOL / IS_LONG
을 설정한 후value.lval = 0;
할당을 하나 더 추가합니다. 🎜 🎜그러나value
의member
에 값이 할당되었는지 여부에 관계없이zvalue_value 값
은 🎜메모리를 점유해야 합니다🎜, 🎜 🎜이런 식으로NULL
은4바이트
메모리를 할당하는 과정 중 하나가 줄어든 것에 불과하지만 최신 CPU의 관점에서 보면 🎜이러한 장점은 무시될 수 있습니다🎜. 🎜 🎜자세한 내용은 http://www.php-internals.com/...🎜을 참조하세요.실제 프로젝트에서는 무시해도 됩니다