PHP에서의 순환 작업 최적화

가벼운 작업이라도 순환문 안에서 여러 번 반복되면 많은 리소스를 소모할 수 있습니다.

예제를 통해 살펴보겠습니다. 다음과 같은 배열이 주어져 있다고 가정해 봅시다:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>

이 배열 요소들의 평균을 구해 봅시다. 이를 위해서는 요소들의 합을 구한 다음 그 합을 요소의 개수로 나누어야 합니다. 어떤 프로그래머가 이 문제를 다음과 같이 해결했다고 가정해 보겠습니다:

php<?php
  $sum = 0;
  
  foreach ($arr as $elem) {
    $sum += $elem / count($arr);
  }
  
  echo $sum;
?>

이 해결책의 문제점을 살펴보겠습니다. 기술적으로 코드는 올바르게 작동하고 정답을 제공합니다. 수학적으로는 전체 합을 개수로 나누든, 각 항을 개수로 나눈 후 더하든 결과는 동일하기 때문입니다.

그러나 다른 문제가 발생합니다. 문제는 우리가 배열에 있는 요소의 수만큼 나눗셈을 수행한다는 점입니다. 결과적으로 우리는 많은 불필요한 작업을 하게 되는데, 왜냐하면 나눗셈은 마지막에 한 번만, 찾은 전체 합을 나누는 것으로 충분하기 때문입니다.

이제 우리 코드를 최적화해 보겠습니다:

php<?php
  $sum = 0;
  
  foreach ($arr as $elem) {
    $sum += $elem;
  }
  
  echo $sum / count($arr);
?>
Задание 1

아래 주어진 코드를 최적화하세요:

php<?php
  for ($i = 1; $i <= 31; $i++) {
    if ($i === date('d')) {
      echo "<b>$i</b><br>";
    }
    
    if ($i !== date('d')) {
      echo "$i<br>";
    }
  }
?>