티스토리 뷰
Android Performance Youtube 채널에 올라온 것이 있어 리뷰하였습니다. Android가 성능이 나쁘다는 평가를 극복하기 위해 애쓰고 있죠. 이미지 사이즈를 줄이고 데이터 사이즈도 줄이라는 익히 알만한 내용이지만 설명 중 몰랐던 몇몇 기술들이 있어서 정리해보았습니다.
- 두가지가 중요하다 : 이미지, serialized data
- 이미지를 작게 만들어야 한다
- 전송 속도가 곧 앱 속도
- 네트워크를 많이 쓰면 배터리를 많이 사용한다
- 전송량은 사용자의 돈이다
- JPG로 손실 압축을 사용하라 - webp format
- 이미지 서버에 다양한 사이즈를 준비하고 사용목적, 디바이스 크기등에 따라 다른 이미지를 제공하라
- Serialized data도 중요하다
- Json은 불필요한 내용이 너무 많다. Spade, linefeed, metadata 등등
- Protocol buffers, Nano-Proto-Buffers, FlatBuffers등의 대안
- Android Studio에 networking monitor tool 인 ARO tool이 있음
위에서 언급된 내용 중 몰랐던 것을 찾아 간단히 알아보았습니다.
- webp 이미지 타입
- jpg가 alpha channel을 지원하지 않는다면 webp는 지원
- 손실이지만 압축률이 좋음
- 같은 SSIM index일때에도 JPG보다 25~45% 작음
- 비손실일때에도 PNG보다 26% 작음
- 크롬, 오페라에서 지원, 안드로이드 크롬에서도 4.0 이후부터 지원
- 안드로이드 native에서 지원되지 않아 쓰고싶으면 라이브러리를 넣어야 함
- https://developers.google.com/speed/webp/
- Protocol buffers
- 데이터를 압축하여 보내어 크기가 많이 줄어듬
- https://developers.google.com/protocol-buffers/
- Nano-Proto-Buffers
- 32bits micro controller를 위해 만든 임베디드용
- c로 구현
- https://code.google.com/p/nanopb/
- FlatBuffers
- Proto buffer가 인코딩/디코딩 파싱등으로 오버헤드가 있는데 이를 제거함
- 속도 측면에서 좋음 데이터 크기는 Protocol buffers에 비해 약간 큼
- https://google.github.io/flatbuffers/md__benchmarks.html
댓글