fury - 엄청 빠른 멀티 랭귀지 직렬화(Serialization) 프레임워크
(github.com/alipay)- JIT 과 Zero-Copy 기반으로 빠른 속도 및 쉬운 사용법을 제공
- Java/Python/C++/Golang/Javascript 지원
- Java의 JDK/Kryo/Hessian 같은 직렬화 프레임워크를 코드 변경없이 그냥 대체 가능. 속도는 100배 빠름
- Golang의 공유/순환 참조 객체 직렬화 및 자동 객체 직렬화 지원
- 확장가능한 JIT 프레임워크를 이용한 비동기 멀티쓰레드 방식으로 20~170배까지 성능을 개선
- 생성된 코드에서 인라인 변수로 메모리 접근 줄임
- 생성된 코드에서 인라인 호출을 통해서 가상 메서드 호출을 감소
- 조건 분기를 줄임
- 해쉬 룩업도 감소
- 멀티플 바이너리 프로토콜: 크로스 랭귀지 오브젝트 그래프, 네이티브 자바/파이썬 오브젝트 그래프, Row 포맷 프로토콜 등
간단한 성능 테스트를 해봤습니다.
비지니스 객체 인코딩 디코딩 1000000회
JDK: 55123ms
fstCodec: 2500ms ( https://github.com/RuedigerMoeller/fast-serialization )
fury: 957ms