[android] FlatBuffers ( json 보다 좋은 format? ) |
http://frogermcs.github.io/flatbuffers-in-android-introdution
-
Facebook 이 대부분의 Android app 에서 JSON 을 FlatBuffers 로 바꾸면서 많은 성능 향상을 이루었다고 발표했다.
-
FlatBuffers 는 Google 의 cross-platform serialization lib 이다.
원래는 game 개발을 목적으로 생성되었으며, UI 를 가진 앱들의 기본인 16ms rule 을 따른다.
-
FlatBuffers 가 효율적인 이유는?
Serialized data 가 flat binary buffer 라서 parsing 이 필요없다. -> 빠르다
Buffer 그 자체 이외의 추가적인 메모리 할당이 필요없다. -> 메모리를 적게 쓴다.
-
flatc 라는 FlatBuffers compiler 가 있다.
https://github.com/google/flatbuffers 에서 다운로드 받는다.
이 녀석은 binary -> POJO(data container), JSON -> binary 로 변환하는데 사용된다.
이 변환을 위해서는 data structure schema 가 필요하다.
이 스키마는 아래 문서를 참고하면 된다.
https://google.github.io/flatbuffers/md__schemas.html
flatc 로 commpile 하면 JSON -> bin, POJO 생성을 할 수 있다.
$ ./flatc -j -b repos_schema.fbs repos_json.json
output file 은 아래와 같다.
repos_json.bin
Repos/Repo.java
Repos/ReposList.java
Repos/User.java
-
앱에서 FlatBuffers 를 적용하기 위해서는 client 쪽 lib 을 dependency 로 주어야 한다.
private void loadFlatBuffer(byte[] bytes) { ByteBuffer bb = ByteBuffer.wrap(bytes); ReposList reposListFlat = ReposList.getRootAsReposList(bb); for (int i = 0; i < reposListFlat.reposLength(); i++) { Repo repos = reposListFlat.repos(i); Log.d("FlatBuffers", "Repo #" + i + ", id: " + repos.id()); } }
-
JSON 과의 비교를 해보자면..
478kB 의 JSON 파일에 대해 약 200ms 의 parsing 시간 소요.
362kB 의 FlatBuffer 파일에 대해 (내용물은 동일) 약 5ms 의 parsing 시간 소요
( 용량과 parsing 모두 효율적이라는 이야기 )
-
Tutorial 느낌의 잘 정리된 자료는 아래 링크
http://gompangs.tistory.com/57
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Chrome Custom Tabs (3) | 2019.01.26 |
---|---|
[android] PercentLayout (0) | 2019.01.25 |
[android] Curved motion (0) | 2019.01.23 |
[android] 변경이 잦은 gradle 설정 분리하기 (0) | 2019.01.22 |
[android] Transition animations (0) | 2019.01.21 |
댓글