상현에 하루하루
개발자의 하루

PHP 8.1: Performance

( 업데이트: )

성능을 이전 버전과 비교할 수 있는 적절한 벤치마크가 없습니다.

하지만 Dmitry는 Inheritance Cache를 추가했습니다.

PHP 클래스는 (opcache에 의해) 별도로 컴파일 및 캐시되지만 각 요청에 대해 런타임에 “linking“이 수행됩니다. “linking” 프로세스에는 여러 호환성 검사 및 차용 메서드/속성/상수가 부모 및 특성을 구성하는 과정이 포함될 수 있습니다. 이것은 상당한 시간이 걸리지만 결과는 각 요청에서 동일합니다.

Inheritance Cache는 모든 종속 클래스의 고유 집합에 대해 “linking”을 한 번 수행하고 결과를 opcache 공유 메모리에 저장합니다.

상당히 기술적인 설명이라는 것을 알고 있지만 결과는 매우 측정 가능합니다. Dmitry는 Symfony의 “Hello World”앱에서 8%의 성능 향상을 보았다고 말했습니다. 또한 $GLOBALS 사용 방식이 변경되어 모든 배열 작업의 성능이 향상됩니다.

마지막으로 PHP의 timelib에도 몇 가지 최적화가 있어 Symfony의 데모 앱에서 또 다른 몇 퍼센트 향상을 얻었습니다.