2. 원문
• Improving Facebook's performance on Android with
FlatBuffers
• https://code.facebook.com/posts/872547912839369/improving-
facebook-s-performance-on-android-with-flatbuffers/
3. 소셜 그래프
• 앱이 John 의 Story 에 대해 질의 했을 때 받아올 데이터
• Tree 구조의 데이터를 JSON 으로 전송 받음
4. JSON 이용 시 문제
• 파싱 속도
• 20 KB 파싱에 35 ms 소요
• UI 갱신주기인 16.6 ms 보다 긺
• 스크롤 시 버벅임 발생
• 파서 초기화
• JSON 구조와 코드사이의 필드 매핑 필요
• 앱 실행 시 100 ~ 200 ms 소요
• 가비지 컬렉션
• 20 KB 파싱에 100 KB 의 임시 메모리 할당 필요
8. JSON 사용시 구조
• 3 계층 구조
• UI 표시 위해 메모리 캐시 필요
• UI 와 저장공간은 어플리케이션
로직과 다른 스레드에서 관리될
수 있어 주의 필요
• UI 가 여러곳으로부터 데이터를
받을 수 있어 복잡함
• 캐싱된 데이터는 저장공간
• 새 데이터는 네트워크
• 변경은 어플리케이션 로직 등
9. FlatBuffers 사용시 구조
• Flat Models
• UI 와 어플리케이션 로직 분리
• UI는 저장공간 반영만
• 로직은 저장공간에 쓰기만
• UI 와 로직이 다른 쓰레드에서 돌아
도 문제 없음
10. FlatBuffers 적용 결과
• Story 당 disk cache 에서 읽어 들이는 시간 35 ms -> 4 ms 로
감소
• 임시 메모리 할당 75% 감소
• 실행 시간 10~15% 감소
• 저장공간 15% 감소
11. 참고
• FlatBuffers
• https://google.github.io/flatbuffers/
• Game On! - Flatbuffers
• https://www.youtube.com/watch?v=iQTxMkSJ1dQ
• Improving Facebook's performance on Android with
FlatBuffers
• https://code.facebook.com/posts/872547912839369/improving-
facebook-s-performance-on-android-with-flatbuffers/
• Flatbuffers for Unity + Sample Code
• http://exiin.com/blog/flatbuffers-for-unity-sample-code/