PHP

[PHP] 일반 배열보다 빠르고 메모리를 적게 쓰는 SplFixedArray

teamnova 2025. 8. 31. 15:20
728x90

안녕하세요. 

오늘은 일반 배열보다 빠르고 메모리를 적게 쓰는 SplFixedArray에 대해 알아보겠습니다. 

 

SplFixedArray

SplFixedArray는 SPL(Standard PHP Library)에서 제공하는 "고정 크기 배열"입니다. 

일반적인 PHP 배열과 가장 큰 차이점은 처음 생성할 때 크기를 미리 지정해야 하고, 한 번 정해진 크기는 변경할 수 없다는 점입니다. 

 

SplFixedArray의 장점은 다음과 같습니다. 

  1. 더 빠른 속도 : PHP 내부적으로 크기를 계속 확인하고 동적으로 메모리를 재할당할 필요가 없어 일반 배열보다 인덱스 접근 속도가 더 빠름
  2. 적은 메모리 사용 : 각 요소가 차지할 공간이 미리 정확하게 계산되므로, 유연성을 우해 추가 공간을 확보하는 일반 배열에 비해 메모리를 훨씬 효율적으로 사용함

즉, 크기가 정해진 대량의 데이터를 다룰 때, SplFixedArray를 사용할 수 있습니다.

 

예제 코드입니다. 

 

10만 개의 요소를 가진 일반 배열과 SplFixedArray를 각각 생성한 후, 메모리 사용량을 비교해 보겠습니다. memory_get_usage() 함수를 이용해 각 배열 생성 전후의 메모리 변화를 측정합니다.

 

<?php

// --- 1. 일반 배열 테스트 ---
$startMemory = memory_get_usage();
$array = [];
for ($i = 0; $i < 100000; $i++) {
    $array[$i] = $i;
}
$endMemory = memory_get_usage();
$usage = ($endMemory - $startMemory) / 1024; // KB 단위로 변환
echo "일반 배열 메모리 사용량: " . round($usage) . " KB" . PHP_EOL;


// --- 2. SplFixedArray 테스트 ---
$startMemory = memory_get_usage();
// 크기를 100000으로 고정하여 생성
$fixedArray = new SplFixedArray(100000);
for ($i = 0; $i < 100000; $i++) {
    $fixedArray[$i] = $i;
}
$endMemory = memory_get_usage();
$usage = ($endMemory - $startMemory) / 1024; // KB 단위로 변환
echo "SplFixedArray 메모리 사용량: " . round($usage) . " KB" . PHP_EOL;

?>

 

실행 결과 

일반 배열 메모리 사용량: 2052 KB 
SplFixedArray 메모리 사용량: 1564 KB