PHP에서의 순환 작업 최적화
가벼운 작업이라도 순환문 안에서 여러 번 반복되면 많은 리소스를 소모할 수 있습니다.
예제를 통해 살펴보겠습니다. 다음과 같은 배열이 주어져 있다고 가정해 봅시다:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
이 배열 요소들의 평균을 구해 봅시다. 이를 위해서는 요소들의 합을 구한 다음 그 합을 요소의 개수로 나누어야 합니다. 어떤 프로그래머가 이 문제를 다음과 같이 해결했다고 가정해 보겠습니다:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
이 해결책의 문제점을 살펴보겠습니다. 기술적으로 코드는 올바르게 작동하고 정답을 제공합니다. 수학적으로는 전체 합을 개수로 나누든, 각 항을 개수로 나눈 후 더하든 결과는 동일하기 때문입니다.
그러나 다른 문제가 발생합니다. 문제는 우리가 배열에 있는 요소의 수만큼 나눗셈을 수행한다는 점입니다. 결과적으로 우리는 많은 불필요한 작업을 하게 되는데, 왜냐하면 나눗셈은 마지막에 한 번만, 찾은 전체 합을 나누는 것으로 충분하기 때문입니다.
이제 우리 코드를 최적화해 보겠습니다:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
아래 주어진 코드를 최적화하세요:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>