본문 바로가기
지속가능티끌/Data.Math.Phys

FlatBuffers . 고효율 직렬화 라이브러리

by i.got.it 2026. 7. 28.

 

 

 

FlatBuffers

- 효율적 크로스 플랫폼 직렬화 라이브러리

- 지원 언어 :  C++, C#, C, Go, Java, Kotlin, JavaScript, Lobster, Lua, TypeScript, PHP, Python, Rust 및 Swift

- 언패킹(파싱) 없이 직렬화 데이터에 접근 

- 하위/상위 호환성 

- 메모리 효율성, 속도 

- 최소한의 의존성 , 작은 코드 용량. 

 

간단비교 

Protocol Buffers  

- Protocol Buffers는 FlatBuffers와 상당히 유사하지만, 가장 큰 차이점은 FlatBuffers 는 파싱/언패킹하는 단계가 필요하지 않고 즉시 데이터에 접근한다. 

- 프로토콜 버퍼의 코드 사이즈가 훨신 크다. 

 

 

 

 

FlatBuffers 활용 핵심 개념 

 
FlatBuffers를 사용하려면 기존의 "구조체 선언 ➡ 메모리 덤프 전송" 방식에서 벗어나 다음 3가지 단계를 이해해야 한다. 
  1. IDL 스키마 파일 (.fbs): 데이터 구조를 정의하는 텍스트 파일. 필드의 타입, 이름, 기본값 등을 지정.
  2. flatc 컴파일러: .fbs 파일을 입력받아 각 언어(C, C++, Python 등)에 맞는 소스 코드를 자동으로 생성해 주는 도구. 이 생성된 코드에 오프셋 계산 및 데이터 접근 함수가 포함되어 있다. 
  3. vtable (가상 테이블): FlatBuffers 내부적으로 가변 데이터를 다루기 위해 패킷 내부에 포함하는 오프셋 지도. 기존 고정 패킷보다 수 바이트의 헤더 오프헤드가 발생하지만, 이를 통해 호환성을 유지.

 

FlatBuffers 라이브러리 

 

C / C++ (MCU용 경량)

MCU 환경에서는 공식 C++ 라이브러리보다 메모리 할당을 최소화하고 가벼운 C 전용 라이브러리를 사용하는 것이 좋다. 
  • 추천 라이브러리: flatcc (FlatBuffers Compiler and Library in C)
    • 특징: 공식 C++ 라이브러리는 무겁고 동적 메모리(malloc)를 자주 사용하지만, flatcc는 런타임 성능이 매우 빠르고 동적 할당 없이 고정된 버퍼(서버/클라이언트 측 모두) 상에서 빌드가 가능하여 nRF5 등의 MCU에서도 사용 가능 

 

 

 

 

 

Python (PC 수신 및 모니터링용)

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


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5