루프 성능
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨. 66개 중 13번째.
Loop 성능을 최적화하면 애플리케이션의 속도를 크게 향상시킬 수 있으며, 특히 대규모 데이터 세트에서 더욱 그렇습니다.
반복문 전에 컬렉션의 길이를 변수에 저장하세요:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // 길이를 한 번만 저장
for (int i = 0; i < length; i++) // 저장된 값 사용
{
Console.WriteLine(numbers[i]);
}루프 조건에서 메서드를 반복해서 호출하지 마세요. 예를 들면 다음과 같습니다.
for (int i = 0; i < GetCount(); i++)
{
// 루프 본문
}GetCount() method는 loop의 every iteration에서 called됩니다. 이는 loop가 1000번 실행되면 GetCount()도 1000번 실행된다는 의미입니다. loop condition은 각 iteration 전에 평가되기 때문입니다.
올바르게 수행하는 방법은 다음과 같습니다:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// 루프 본문
}루프가 시작되기 전에 GetCount()가 한 번만 호출되고, 그 값은 count 변수에 저장됩니다. 그런 다음 루프는 모든 반복에서 이 저장된 값을 사용하므로 메서드를 반복해서 호출할 필요가 없습니다.
이 approach는 특히 호출되는 method가 복잡한 계산이나 data 액세스를 수행할 때 중복 작업을 줄여 코드가 더 빠르게 실행되도록 할 수 있습니다.
챌린지
쉬움optimizedSum이라는 메서드를 작성하여 다음을 수행하세요:
- 정수 배열을 매개변수로 받습니다
- 모든 요소의 합을 계산합니다
- 최적화된 접근 방식과 최적화되지 않은 접근 방식을 모두 구현합니다:
- 최적화되지 않음: 각 루프 반복에서 array.Length를 호출합니다
- 최적화됨: 루프 전에 길이를 캐시합니다
- 최적화된 접근 방식의 결과를 반환합니다
직접 해보기
public class OptimizedSum
{
// optimizedSum 메서드를 구현하세요
public static int optimizedSum(int[] numbers)
{
// 여기에 코드를 작성하세요
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
직접 연습해 보세요: 온라인 C# 컴파일러