.NET

성능 최적화

Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, 성능 모범 사례

22 면접 질문·
Senior
1

성능을 측정할 때 단순한 Stopwatch에 비해 BenchmarkDotNet의 주요 장점은 무엇입니까?

답변

BenchmarkDotNet은 warm-up을 수행하고 통계적 안정화와 함께 여러 반복을 측정하며 JIT 및 GC 편향을 방지합니다. 단순한 Stopwatch는 이러한 요소를 제어하지 않으므로 대표성이 없는 결과를 줄 수 있습니다. BenchmarkDotNet은 작업당 메모리 할당과 같은 상세한 지표도 제공합니다.

2

프로덕션에서 메모리 할당을 분석하고 메모리 누수를 식별하기 위해 권장되는 Microsoft 도구는 무엇입니까?

답변

JetBrains의 dotMemory와 Microsoft의 PerfView는 .NET에서 메모리를 프로파일링하기 위해 권장되는 도구입니다. PerfView는 무료 오픈소스이며 heap allocations, stack traces, GC 이벤트를 분석할 수 있습니다. 특히 큰 오버헤드 없이 프로덕션에서 메모리 누수를 진단하는 데 적합합니다.

3

FirstOrDefault()와 같은 LINQ 메서드에서 숨겨진 메모리 할당을 어떻게 식별합니까?

답변

MemoryDiagnoser 속성과 함께 BenchmarkDotNet을 사용하면 작업당 할당을 확인할 수 있습니다. LINQ의 lambda는 delegate를 통해 숨겨진 할당을 생성합니다. 단순한 foreach 루프로 교체하면 이러한 할당이 제거됩니다. PerfView는 할당 stack traces를 캡처하여 출처를 식별할 수도 있습니다.

4

BenchmarkDotNet에서 CPU 성능을 측정하고 코드 hotspot을 식별하려면 어떤 속성을 사용합니까?

5

Mean: 125.3 ns, StdDev: 45.2 ns를 보여주는 BenchmarkDotNet 결과를 어떻게 해석합니까?

+19 면접 질문

다음 면접을 위해 .NET을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기