PHP 8의 출시로 JIT (Instant Compilation) 기술은 중요한 새로운 기능이되었습니다. Compute 집약적 인 작업을 처리 할 때 PHP의 성능을 향상시키기 위해 JIT가 소개되었습니다. PHP 8은 여러 측면에서 성능을 최적화하지만 많은 개발자들은 PHP의 일부 공통 기능 (예 : Array_change_key_case () ) 가이 새로운 기술의 지원으로 성능 향상을 누릴 수 있는지 여부에 대해 여전히 우려하고 있습니다.
Array_change_key_case ()는 배열의 모든 키 이름 (키)을 대문자 또는 소문자로 변환하는 PHP의 내장 기능입니다. 함수는 다음과 같이 정의됩니다.
array array_change_key_case ( array $array , int $case = CASE_LOWER )
$ 배열 매개 변수는 원래 배열을 나타냅니다.
$ CASE 매개 변수는 변환 된 키 이름이 대문자 ( Case_Upper ) 또는 소문자 ( Case_Lower )로 변환되는지 여부를 결정합니다. 기본값은 Case_Lower 입니다.
예를 들어, 다음 코드는 배열의 키 이름을 소문자로 변환합니다.
$array = array("A" => "apple", "B" => "banana");
$newArray = array_change_key_case($array, CASE_LOWER);
print_r($newArray);
산출:
Array
(
[a] => apple
[b] => banana
)
PHP 8의 JIT 컴파일러는 PHP 엔진의 주요 개선입니다. JIT는 런타임 구문 분석 오버 헤드를 줄이기 위해 PHP 코드를 기계 코드로 컴파일하여 성능을 향상시킵니다. JIT는 주로 복잡한 수학 작업, 이미지 처리 등과 같은 CPU 집약적 인 작업에서 역할을하지만 I/O 집약적 작업 (예 : 데이터베이스 쿼리, 파일 작업 등)에 상대적으로 작은 영향을 미칩니다.
대부분의 웹 애플리케이션에서 I/O 운영은 여전히 병목 현상이므로 JIT는 웹 개발의 특정 작업에 대한 성능 개선이 제한되어 있습니다. 그러나 일부 특정 컴퓨팅 작업의 경우 JIT가 크게 개선 될 수 있습니다.
Array_change_key_case () 는 계산 집중 기능이 아니지만 PHP 8의 JIT 컴파일로부터 혜택을 누릴 수 있습니다. 일부 테스트 및 경험을 바탕으로 JIT 컴파일러는 키 이름 변환과 같은 일부 일반적인 배열 작업을 최적화 할 수 있습니다.
그러나 array_change_key_case () 의 성능 병목 현상은 주로 배열의 크기와 PHP에서 배열 작업의 구현에서 비롯됩니다. JIT가 활성화 되더라도 특정 소규모 운영에서는 성능 향상이 분명하지 않을 수 있습니다. JIT의 장점은 간단한 배열 키 변환보다 대규모 컴퓨팅 작업에 더 반영됩니다.
PHP 8의 JIT 컴파일이 Array_change_key_case () 를 성능 향상시키는 지 여부를 더 명확하게 이해하려면 간단한 성능 비교 테스트를 수행 할 수 있습니다. 다음 코드는 PHP 7 및 PHP 8에서 array_change_key_case ()를 사용하는 시간 소비를 보여줍니다.
// PHP 7 예
$array = range("A", "Z");
$start = microtime(true);
array_change_key_case($array, CASE_LOWER);
$end = microtime(true);
echo "PHP 7: " . ($end - $start) . " 두번째\n";
// PHP 8 예(할 수 있게 하다 JIT)
$array = range("A", "Z");
$start = microtime(true);
array_change_key_case($array, CASE_LOWER);
$end = microtime(true);
echo "PHP 8: " . ($end - $start) . " 두번째\n";
경우에 따라 PHP 8은 더 큰 배열을 처리 할 때 PHP 7보다 더 빠른 처리 속도를 보일 수 있습니다. 그러나 이러한 개선은 특정 응용 프로그램 시나리오에서, 특히 소수의 요소와 관련된 배열 작업시 분명하지 않을 수 있습니다.
PHP 8에서는 JIT 컴파일이 성능 향상을 가져 오지만 Array_change_key_case () 와 같은 간단한 배열 작업은 성능이 크게 향상되지 않을 수 있습니다. JIT는 주로 컴퓨팅 집약적 인 운영에 더 효율적이므로 웹 개발에서 가장 일반적인 작업의 경우 JIT의 장점이 제한적일 수 있습니다.
그러나 애플리케이션이 많은 배열 작업, 특히 높은 부하에 포함 된 경우 PHP 8 JIT 컴파일을 사용하여 성능이 향상 될 수 있습니다. 또한 PHP의 지속적인 최적화와 JIT 컴파일 기술의 개선으로 향후 버전은 이러한 작업을 더 잘 지원할 수 있습니다.