하지만, SwiftUI 에서 컬렉션 뷰를 구현하는 데엔 아래의 방법들이 있다. 여기서 컬렉션 뷰란 컬렉션 타입(배열 등)의 데이터를 반복적인 뷰로 보여주는 뷰
를 말한다. UIKit 에서 UITableView 같은 것들을 말하는 것이다.
이번 포스팅에서는 단순히 성능만을 테스트해보고 어떤 차이점이 있는지 탐색해보고자 한다.
필자도 사실 Instruments 에 대해 배운 적은 없다. 딱히 웹에 자료도 많지 않았다. 그래서 여러 개의 Template 을 사용해보는 것이다.
아주 반짝반짝하고 멋진 발견은 예상치 못한 곳으로 가야하는 것 아닐까 한다. (이래서 취업이 안되는건가 싶기도 하다)
앞에서 말했다시피 Firebase 를 사용한다. 서버를 구성하는 실력은 없어서 Firebase Realtime Database 를 사용하는 것이다.
Free-Tier 로 다운로드를 달마다 10GB 할 수 있는데 이 정도면 충분할 것 같다.
블로그 글을 계속 보면서 느낀건데 그냥 맨 앞에 요약을 보여주는 건 어떨까 하여 요약 먼저 제시하고자 한다.
앱은 이런식으로 실행한다.
VStack 은 말 그대로 수직으로 뷰를 쌓는 것이다.
아주 중요한 점이 있는데, 화면이 처음 보여질 때 모든 뷰가 초기화된다는 것이다. 뷰가 몇개 없다면 괜찮지만 굉장히 많은 뷰를 보여주어야 할 때는 주의해야 한다.
그나마 가장 많은 반응을 보인 그래프이다. 확실히 리소스를 소비하는 부분에 대해 주의할 필요가 있다고 생각된다.
LazyVStack 등은 SwiftUI 2.0 부터 소개되었는데, 각 View 가 필요에 따라 최초 한번만 렌더링 된다. 이런 부분에서 많은 리소스를 절약할 수 있다는게 일반적인 설명이다.
내부 크기에 관해서는 LazyVStack 이 VStack 보다 많이 차지하게 된다. 만약 내부 View 갯수가 많지 않고 정확한 렌더링이 필요하다면 VStack 으로 모두 초기화해도 괜찮을 것이다.
한마디로 리소스 부분에서 상당한 절약을 할 수 있다는 장점을 가진 Stack 이다.
CPU Counter 에서만 VStack 과 같은 반응이 있었고 나머지는 별 반응이 없다. 비동기 함수를 실행하는 것 말고는 최적화가 잘 되어 있다고 생각한다.
List 는 우선 굉장히 많은 것들이 이미 정의되어 있다.
init 함수가 굉장히 많은데, 공식문서에서는 다음과 같은 역할을 할 때 유용하다고 알려져 있다.
상당히 많은 부분이 이미 정의되어 있기 때문에 깊은 부분까지의 커스터마이징은 어렵지 않을까 생각된다.
모든 Template 에서 별다른 반응을 보이고 있지 않다. 내부적으로 최적화가 잘 되어있기 때문이라고 생각된다.
사실 이 포스팅은 Line 기술블로그에 Swift Concurrency 에 대한 글을 보고 감명받아 작성해보고 싶었던 것이다. 확실히 기술력 있는 회사의 블로그라 그런지 자료를 토대로 기술을 평가하는구나 싶어서 나도 한번 해보고 싶었다.
결론적으로 쉽지는 않다. 09시부터 시작했는데 테스트 앱을 만든 것이 15시다. gif 를 보면 알겠지만 별거 없는 앱인데도 이렇게 오래 걸린다. 자료를 모으는 작업을 끝내고 보니 17시30분이다. 자료를 모으는 작업은 예전 대학교(생명과학/화학과)에서 느낀 감정과 비슷했다. 엄청 괴로운 작업이다.
개인적으로 이젠 개발자 간의 양극화가 심해질 것이라고 생각한다. 깊이가 있는 개발자가 효율성이 극대화되면 깊이 없는 개발자 3명 정도를 대체하지 않을까 싶다. 이건 사업자, 대체한 개발자 모두에게 이익이기 때문이다. 문제는 사람 몸이 하나인데 어떻게 3명을 대체하느냐 였는데 그것도 AI 로 인해 가능해질 것 같다.
요즘 막차를 타야된다는 압박을 자주 느낀다. 이런식으로 깊이를 탐험하는 시도를 자꾸 해보지 않으면 AI 에 대체되는 것이 아니라 다른 개발자에게 대체될 것이다.
맘을 강하게 먹지 않으면 안된다.