작성
·
8
0
안녕하세요! 강의 잘 듣고 있습니다.
13. 데이터 테이블 관리 시스템 부분을 듣다가 몇 가지 의문점이 있어 질문 드립니다.
CSV Reader가 List<Dictionary<string, object>>
를 반환하고 있고, 이를 로드 함수에서 실제 데이터로 형변환해 사용하고 있습니다. 그런데 object 타입을 값 타입으로 변환하면 언박싱이 발생해서성능에 좋지 않다고 알고 있습니다. 통일성을 위해서 object 타입으로 쓰신 건지, 로드 과정이 Awake
에서 한 번에 일어나기 때문에 괜찮은지 궁금합니다. 그리고 object
대신 string
을 반환하는건 어떤지도 여쭤보고 싶습니다.
챕터 데이터를 검색할 때 리스트에서 순회를 하는데 딕셔너리 같은 별도의 자료 구조에 저장하지 않은 이유가 궁금합니다.
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. dain님.
데이터 테이블 관리 시스템에서 CSV Reader를 사용하여 데이터를 로드하는 과정에 대한 질문을 주셨네요. CSV 데이터를 읽을 때 List<Dictionary<string, object>>
형식을 사용하는 이유와 성능적 고려 사항, 그리고 데이터 검색 방식에 대한 궁금증을 해결해 드리겠습니다.
List<Dictionary<string, object>>
의 사용 이유:
object
유형을 사용하는 것은 유연성을 높여 주기 때문에, 다양한 데이터 타입을 쉽게 처리할 수 있습니다. 물론 언박싱으로 인해 성능이 저하될 수 있지만, 데이터 로드가 Awake
에서 한 번만 일어난다면 큰 문제가 되지는 않습니다. 그러나 성능이 중요한 경우, 각 필드를 명시적으로 타입 변환하지 않고 바로 사용할 수 있는 string
이나 다른 적절한 타입을 반환하는 방식을 고려할 수 있습니다. 이는 데이터 형식을 확실히 알고 있을 때 유리합니다.
리스트 순회를 통한 데이터 검색:
검색 성능이 특히 중요하다면, 딕셔너리와 같이 접근 시간이 빠른 자료구조로 사용하는 것이 유리합니다. 데이터의 빈번한 검색이 예상된다면, 이를 고려해 데이터를 초기 로드 시 리스트 대신 딕셔너리 형태로 변환하여 보관하는 방법이 성능 향상에 도움이 될 수 있습니다.
관련해서 데이터를 효율적으로 관리하기 위한 다양한 접근 방법이 설명된 기존 질문과 답변을 찾아보는 것도 좋습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.