본문 바로가기
PHP

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

by teamnova 2025. 8. 31.
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