Menu
Coddy logo textTech

Loop Performance

Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 13번째.

루프 성능 최적화는 특히 대규모 데이터 세트에서 애플리케이션의 속도를 크게 향상시킬 수 있습니다.

루프 전에 컬렉션 길이를 변수에 저장하세요:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once

for (int i = 0; i < length; i++) // Use stored value
{
    Console.WriteLine(numbers[i]);
}

루프 조건에서 반복된 메서드 호출을 피하세요. 예를 들어:

for (int i = 0; i < GetCount(); i++)
{
    // Loop body
}

GetCount() 메서드는 루프의 각 반복마다 호출됩니다. 이는 루프가 1000번 실행된다면 GetCount()도 1000번 실행된다는 의미이며, 루프 조건이 각 반복 전에 평가되기 때문입니다.

다음은 올바른 방법입니다:

int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Loop body
}

GetCount()는 루프가 시작되기 전에 한 번만 호출되며, 그 값은 count 변수에 저장됩니다. 그런 다음 루프는 모든 반복에서 이 저장된 값을 사용하므로 메서드를 반복적으로 호출할 필요가 없습니다.

이 접근 방식은 중복 연산을 줄여 코드 실행 속도를 높일 수 있으며, 특히 호출되는 메서드가 복잡한 계산이나 데이터 액세스를 수행할 때 그렇습니다.

challenge icon

챌린지

쉬움

optimizedSum이라는 메서드를 생성하세요:

  1. 정수 배열을 매개변수로 받습니다
  2. 모든 요소의 합을 계산합니다
  3. 최적화된 접근 방식과 비최적화된 접근 방식을 모두 구현합니다:
    • 비최적화: 각 루프 반복에서 array.Length를 호출합니다
    • 최적화: 루프 전에 길이를 캐시합니다
  4. 최적화된 접근 방식의 결과를 반환합니다

치트 시트

루프 전에 컬렉션 길이를 변수에 저장하여 반복적인 속성 접근을 피하세요:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once

for (int i = 0; i < length; i++) // Use stored value
{
    Console.WriteLine(numbers[i]);
}

결과를 캐싱하여 루프 조건에서 반복적인 메서드 호출을 피하세요:

// Inefficient - method called every iteration
for (int i = 0; i < GetCount(); i++)
{
    // Loop body
}

// Optimized - method called once
int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Loop body
}

직접 해보기

public class OptimizedSum
{
    // optimizedSum 메서드를 구현하세요
    public static int optimizedSum(int[] numbers)
    {
        // 여기에 코드를 작성하세요
        
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 및 흐름의 모든 레슨