지난 봄에 채팅 리스트 화면을 한참 들여다보고 있었어요. 데이터가 1만 건쯤 쌓인 계정에서만 스크롤이 툭툭 끊기더라고요. 컴포즈 리컴포지션을 한 시간 넘게 뒤졌는데, 정작 범인은 Room 쿼리 한 줄이었습니다. 증상 분리, UI 지연인가 Room 쿼리 지연인가처음엔 당연히 젯팩 컴포즈(Jetpack Compose) 쪽을 의심했어요. LazyColumn 의 key 가 빠진 건지, remember 자리를 잘못 잡은 건지부터 봤거든요. 근데 시스트레이스(Systrace, 현재는 Perfetto 가 후속) 를 따 보니 메인 스레드는 멀쩡한데 IO 디스패처에서 100ms 가 넘는 블록이 계속 잡히더라고요. 데이터 양에 비례해서 프레임이 떨어지면 사실 UI 쪽보다 쿼리 쪽일 확률이 높습니다. 저 같은 경우엔 DAO..