Development/C#
Lazy Loading Pattern
evagrim
2023. 12. 27. 02:14
Simple Use
using System;
public class SomeManager {
private Lazy<SomeClass> lazyLoadedObject = new Lazy<SomeClass>(() => new SomeClass());
public SomeClass LazyLoadedObject {
get { return lazyLoadedObject.Value; }
}
}
public class SomeClass {
// SomeClass의 내용
}
초기화를 개발자가 사용하는 시점까지 미루고 이후 필요할때 로드하는 방식이다.
Lazy Loading 패턴을 사용하는 이유 중 하나는 성능 측면에서의 이점을 얻기 위해서다.
특히 초기화 시점에서 리소스를 할당하거나 계산을 하고 싶지 않거나, 해당 리소스가 필요한 경우가 제한적인 경우에 Lazy Loading을 사용한다.
어떤 멤버 변수나 리소스를 선언 시 초기화하는 것은 그 자체로 큰 성능 이슈를 일으키진 않는다.
그러나 프로그램의 시작 시점이나 해당 멤버 변수가 사용될 때까지 초기화할 필요가 없는 경우, 초기화를 미루는 것이 성능적으로 유리할 수 있다.
예를 들어, 어떤 멤버 변수가 초기화되고 계산에 많은 시간이 걸린다면, 해당 변수를 Lazy Loading 패턴으로 초기화하는 것이 사용자 경험과 성능을 향상시킬 수 있다. 사용자가 해당 변수를 실제로 요청할 때까지 초기화를 미루고, 필요한 경우에만 리소스를 할당하고 계산을 수행할 수 있다.
그러나 모든 상황에서 Lazy Loading을 사용하는 것이 항상 최적은 아니다. 필요한 리소스를 너무 늦게 초기화하면 사용자 경험이 저하될 수 있다. 따라서 Lazy Loading을 사용할 때는 초기화를 늦추는 것과 성능 향상 사이에서 적절한 균형을 유지하는 것이 중요하다.