PHP의 핵심은 배열의 활용입니다. 배열을 잘 활용하면 모든 데이터 구조에서 사용할 수 있습니다. 우리가 사용할 데이터 구조가 많은 SPL이라는 좋은 것이 있는데, 배열을 사용하여 얻을 수 있는 것보다 성능이 훨씬 더 좋습니다.
오늘은 이름에서 알 수 있듯이 고정 크기 배열인 SplFixedArray를 살펴보겠습니다. 인스턴스화할 때 배열 크기를 지정하십시오. 사용 중에는 배열을 확장하거나 줄일 수 없습니다.
따라서 배열에 동적 연산을 수행하는 경우 사용하기에 적합하지 않을 수 있으며 SplFixedArray의 인덱스는 숫자만 가능하며 키 값 배열로 사용할 수 없습니다.
다음은 Array 및 SplFixedArray의 100W 읽기 및 쓰기 성능과 메모리 사용량 테스트입니다
Code
<?php define('TEST_COUNT', 1000000); $memory = memory_get_usage(); $writeTime = microtime(true); $arr = []; for($i = 0; $i < TEST_COUNT; ++$i) { $arr[] = $i; } $writeTime = microtime(true) - $writeTime; $readTime = microtime(true); for($i = 0; $i < TEST_COUNT; ++$i) { $value = $arr[$i]; } $readTime = microtime(true) - $readTime; $memory = memory_get_usage() - $memory; echo '[Array]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL; $memory = memory_get_usage(); $writeTime = microtime(true); $splFixedArray = new SplFixedArray(TEST_COUNT); for($i = 0; $i < TEST_COUNT; ++$i) { $splFixedArray[$i] = $i; } $writeTime = microtime(true) - $writeTime; $readTime = microtime(true); for($i = 0; $i < TEST_COUNT; ++$i) { $value = $splFixedArray[$i]; } $readTime = microtime(true) - $readTime; $memory = memory_get_usage() - $memory; echo '[SplFixedArray]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL;#🎜 🎜## 🎜🎜#실행 결과
[Array]
Memory: 33558608 bytes
Write Time: 0.083034038543701s
Read Time: 0.022516965866089s
[SplFixedArray]
Memory: 16003208 bytes
Write Time: 0.037343978881836s
Read Time: 0.022947072982788s
메모리 사용량: SplFixedArray는 다음보다 더 많이 절약할 수 있습니다. 어레이 메모리의 절반
쓰기 성능: SplFixedArray가 어레이보다 빠릅니다
읽기 성능: 50/50, 많은 테스트를 거친 후 어레이 읽기 속도가 훨씬 빠릅니다
# 🎜🎜#인덱스 배열만 사용해야 하고 배열 구성원 수를 예측할 수 있다고 확신한다면 분명히 SplFixedArray를 사용하는 것이 더 적합합니다.위 내용은 배열 및 SplFixedArray 비교(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!