FlatBuffers
- 효율적 크로스 플랫폼 직렬화 라이브러리
- 지원 언어 : C++, C#, C, Go, Java, Kotlin, JavaScript, Lobster, Lua, TypeScript, PHP, Python, Rust 및 Swift
- 언패킹(파싱) 없이 직렬화 데이터에 접근
- 하위/상위 호환성
- 메모리 효율성, 속도
- 최소한의 의존성 , 작은 코드 용량.
간단비교
Protocol Buffers
- Protocol Buffers는 FlatBuffers와 상당히 유사하지만, 가장 큰 차이점은 FlatBuffers 는 파싱/언패킹하는 단계가 필요하지 않고 즉시 데이터에 접근한다.
- 프로토콜 버퍼의 코드 사이즈가 훨신 크다.
FlatBuffers 활용 핵심 개념
- IDL 스키마 파일 (.fbs): 데이터 구조를 정의하는 텍스트 파일. 필드의 타입, 이름, 기본값 등을 지정.
- flatc 컴파일러: .fbs 파일을 입력받아 각 언어(C, C++, Python 등)에 맞는 소스 코드를 자동으로 생성해 주는 도구. 이 생성된 코드에 오프셋 계산 및 데이터 접근 함수가 포함되어 있다.
- vtable (가상 테이블): FlatBuffers 내부적으로 가변 데이터를 다루기 위해 패킷 내부에 포함하는 오프셋 지도. 기존 고정 패킷보다 수 바이트의 헤더 오프헤드가 발생하지만, 이를 통해 호환성을 유지.
FlatBuffers 라이브러리
C / C++ (MCU용 경량)
- 추천 라이브러리: flatcc (FlatBuffers Compiler and Library in C)
- 특징: 공식 C++ 라이브러리는 무겁고 동적 메모리(malloc)를 자주 사용하지만, flatcc는 런타임 성능이 매우 빠르고 동적 할당 없이 고정된 버퍼(서버/클라이언트 측 모두) 상에서 빌드가 가능하여 nRF5 등의 MCU에서도 사용 가능
Python (PC 수신 및 모니터링용)
- 추천 라이브러리: flatbuffers (Google Official Python Library)
- 특징: pip install flatbuffers로 간단히 설치. flatc --python 명령어로 생성된 파이썬 모듈을 불러와 시리얼 포트(pyserial)등으로 수신되는 바이트 스트림을 역직렬화 없이 즉시 데이터 요소 접근 가능하다. .
공식 사이트 : https://flatbuffers.dev/
FlatBuffers Docs
Overview FlatBuffers is an efficient cross platform serialization library for C++, C#, C, Go, Java, Kotlin, JavaScript, Lobster, Lua, TypeScript, PHP, Python, Rust and Swift. It was originally created at Google for game development and other performance-cr
flatbuffers.dev
첫 등록 : 2026.07.28
최종 수정 :
단축 주소 : https://igotit.tistory.com/6701
'지속가능티끌 > Data.Math.Phys' 카테고리의 다른 글
| FNV-1a 알고리듬 . 데이터를 고유 수로 변환 (0) | 2026.08.16 |
|---|---|
| PlotJuggler . 시계열 챠팅 툴 (0) | 2026.07.24 |
| COBS . 바이트 시리즈 프레이밍 . 언어별 라이브러리 추천 (0) | 2026.06.16 |
| 피어슨 상관 계수 . Pearson Correlation Coefficient (0) | 2026.01.22 |
| Cantor Pairing Function . 칸토어 페어링 함수 . 2개 수로 고유 수 만들기 (0) | 2026.01.21 |
댓글