728x90
안녕하세요.
오늘은 일반 배열보다 빠르고 메모리를 적게 쓰는 SplFixedArray에 대해 알아보겠습니다.
SplFixedArray
SplFixedArray는 SPL(Standard PHP Library)에서 제공하는 "고정 크기 배열"입니다.
일반적인 PHP 배열과 가장 큰 차이점은 처음 생성할 때 크기를 미리 지정해야 하고, 한 번 정해진 크기는 변경할 수 없다는 점입니다.
SplFixedArray의 장점은 다음과 같습니다.
- 더 빠른 속도 : PHP 내부적으로 크기를 계속 확인하고 동적으로 메모리를 재할당할 필요가 없어 일반 배열보다 인덱스 접근 속도가 더 빠름
- 적은 메모리 사용 : 각 요소가 차지할 공간이 미리 정확하게 계산되므로, 유연성을 우해 추가 공간을 확보하는 일반 배열에 비해 메모리를 훨씬 효율적으로 사용함
즉, 크기가 정해진 대량의 데이터를 다룰 때, 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
'PHP' 카테고리의 다른 글
[PHP] switch 문을 대체하는 match 표현식 (0) | 2025.09.05 |
---|---|
[PHP] strpos(), strrpos()로 특정 문자의 위치 찾기 (1) | 2025.09.01 |
[PHP] parse_str()과 http_build_query()로 쿼리 스트링 파싱 및 생성하기 (1) | 2025.08.29 |
[PHP] range() + array_filter()로 짝수/홀수 필터링하기 (0) | 2025.08.24 |
[PHP] explode()와 implode()로 문자열을 배열로, 배열을 문자열로 변환하기 (0) | 2025.08.23 |