[ZIO] Chunk 란?

Sangwoo Park·2023년 6월 10일
0
post-custom-banner

개요

Chunk 의 한국어 뜻은 덩어리 혹은 모듬 정도로 해석할 수 있다.

Array 도 있고, List 도 있는데, Chunk 는 생소한 개념이다.

어쩌다가 탄생하게 되었을까? 그리고 언제 쓰는 걸까?

Chunk 란?

ZIO 의 Chunk 는 Java array 를 래핑한것이다.

Array 를 사용하려면 런타임에 generic 을 제공하기 위해 ClassTag 를 넣어주어야 한다.
예) def mkArray[T : ClassTag](elems: T*) = Array[T](elems: _*)

하지만 Chunk 는 ClassTag 없이도 사용 가능하다.

Chunk(1,2,3) ++ Chunk(4,5,6)
// res0: Chunk[Int] = IndexedSeq(1, 2, 3, 4, 5, 6)

ClassTag 없이 쓸 수 있는게 좋은 이유

ClassTag를 매번 지정해야하는것이 불편하니까

Chunk 의 장점

기본 배열 타입인 Array 는 속도가 빠르고 원시값을 boxing 하지 않는다.

따라서 Array 를 래핑한 Chunk 도 원시형 자료들을 boxing 하지 않는다.

Array 는 boxing 없이 원시형을 효율적으로 표현할 수 있다. 하지만, update 와 같은 unsafe 한 mutable 메서드를 노출하게 된다.

Chunk 는 immutablility, 즉 불변성을 보장하며 성능까지 챙겨준다.

배운것

Chunk 라는 데이터 타입
원시형 타입을 boxing 하지 않으면 성능이 향상될 수 있다는 것


ref)
https://zio.dev/version-1.x/datatypes/misc/chunk/
https://zio.dev/api-1.x/zio/chunk

profile
going up
post-custom-banner

0개의 댓글