>백엔드 개발 >PHP 튜토리얼 >배열 및 SplFixedArray 비교(코드 예)

배열 및 SplFixedArray 비교(코드 예)

藏色散人
藏色散人앞으로
2019-05-08 09:23:072708검색

PHP의 핵심은 배열의 활용입니다. 배열을 잘 활용하면 모든 데이터 구조에서 사용할 수 있습니다. 우리가 사용할 데이터 구조가 많은 SPL이라는 좋은 것이 있는데, 배열을 사용하여 얻을 수 있는 것보다 성능이 훨씬 더 좋습니다.

오늘은 이름에서 알 수 있듯이 고정 크기 배열인 SplFixedArray를 살펴보겠습니다. 인스턴스화할 때 배열 크기를 지정하십시오. 사용 중에는 배열을 확장하거나 줄일 수 없습니다.

따라서 배열에 동적 연산을 수행하는 경우 사용하기에 적합하지 않을 수 있으며 SplFixedArray의 인덱스는 숫자만 가능하며 키 값 배열로 사용할 수 없습니다.

다음은 Array 및 SplFixedArray의 100W 읽기 및 쓰기 성능과 메모리 사용량 테스트입니다

Code

<?php
define(&#39;TEST_COUNT&#39;, 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 &#39;[Array]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, 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 &#39;[SplFixedArray]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yurunsoft.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제