SlideShare a Scribd company logo
FlatBuffers 를 이용한
안드로이드에서의
페이스북 성능 향상
160807 에그
원문
• Improving Facebook's performance on Android with
FlatBuffers
• https://code.facebook.com/posts/872547912839369/improving-
facebook-s-performance-on-android-with-flatbuffers/
소셜 그래프
• 앱이 John 의 Story 에 대해 질의 했을 때 받아올 데이터
• Tree 구조의 데이터를 JSON 으로 전송 받음
JSON 이용 시 문제
• 파싱 속도
• 20 KB 파싱에 35 ms 소요
• UI 갱신주기인 16.6 ms 보다 긺
• 스크롤 시 버벅임 발생
• 파서 초기화
• JSON 구조와 코드사이의 필드 매핑 필요
• 앱 실행 시 100 ~ 200 ms 소요
• 가비지 컬렉션
• 20 KB 파싱에 100 KB 의 임시 메모리 할당 필요
FlatBuffers
• 파싱 없이 바이트 스트림과 자료구조를 직접 연결
배우자 정보 접근하는 예
• 임시 메모리 할당 없음
• 파일을 메모리로 바로 mmap-ing 시킬 수 있음
• 파일의 필요한 부분만 읽어들일 수 있음
데이터 변경
• 변경된 데이터만 표현하기에도 용이
JSON 사용시 구조
• 3 계층 구조
• UI 표시 위해 메모리 캐시 필요
• UI 와 저장공간은 어플리케이션
로직과 다른 스레드에서 관리될
수 있어 주의 필요
• UI 가 여러곳으로부터 데이터를
받을 수 있어 복잡함
• 캐싱된 데이터는 저장공간
• 새 데이터는 네트워크
• 변경은 어플리케이션 로직 등
FlatBuffers 사용시 구조
• Flat Models
• UI 와 어플리케이션 로직 분리
• UI는 저장공간 반영만
• 로직은 저장공간에 쓰기만
• UI 와 로직이 다른 쓰레드에서 돌아
도 문제 없음
FlatBuffers 적용 결과
• Story 당 disk cache 에서 읽어 들이는 시간 35 ms -> 4 ms 로
감소
• 임시 메모리 할당 75% 감소
• 실행 시간 10~15% 감소
• 저장공간 15% 감소
참고
• 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/

More Related Content

PPTX
MD5 이것저것
PPTX
게임 개발자를 위한 Vba 활용
PPTX
Thrift vs Protocol Buffers vs Avro - Biased Comparison
PDF
Protocol Buffers 入門
PPTX
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
PPTX
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
PPTX
빌드 좀 깨먹지 마라!
PPTX
코드네임 이것저것
MD5 이것저것
게임 개발자를 위한 Vba 활용
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Protocol Buffers 入門
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
빌드 좀 깨먹지 마라!
코드네임 이것저것
Ad

FlatBuffers 를 이용한 안드로이드에서의 페이스북 성능 향상

  • 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 의 임시 메모리 할당 필요
  • 5. FlatBuffers • 파싱 없이 바이트 스트림과 자료구조를 직접 연결
  • 6. 배우자 정보 접근하는 예 • 임시 메모리 할당 없음 • 파일을 메모리로 바로 mmap-ing 시킬 수 있음 • 파일의 필요한 부분만 읽어들일 수 있음
  • 7. 데이터 변경 • 변경된 데이터만 표현하기에도 용이
  • 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/