피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Dynamic Dispatch 제거 및 Encapsulation 강화를 통한 serialport-rs 성능 최적화
Kicking off GSoC: Under the Hood of PR #352 of serialport
AI 요약
Context
기존 아키텍처는 Box 기반의 Dynamic Dispatch를 사용하여 다양한 포트를 처리함. 이로 인해 런타임 오버헤드가 발생하고 OS별 구현체인 TTYPort와 COMPort가 외부에 노출되어 캡슐화가 깨지는 구조적 한계를 가짐.
Technical Solution
- Dynamic Dispatch 제거를 통한 Concrete Type 전환으로 컴파일러 최적화 및 Inline Substitution 유도
- pub struct SerialPort(pub(crate) sys::SerialPort) 구조 도입을 통한 플랫폼별 구현체 은닉 및 Public Interface 단일화
- 내부 구현 변경이 하위 호환성을 해치지 않도록 하는 Tight Encapsulation 적용
- 플랫폼 전용 기능 제공을 위해 SerialPortExt라는 Extension Trait를 도입하여 Cross-platform 성격 유지와 특정 OS 기능 제공을 분리
- 모듈화 강화를 위해 Extension Trait 구현부를 별도 파일로 분리 후 Root에서 Re-export 하는 구조 설계
실천 포인트
- 런타임 다형성 비용이 큰 성능 민감 구간에서 Trait Object 대신 Concrete Type 사용 검토 - 라이브러리 설계 시 OS 전용 구현체를 외부에 노출하지 않고 단일 인터페이스로 캡슐화하는 전략 적용 - 공통 인터페이스를 유지하면서 플랫폼 특화 기능을 제공해야 할 경우 Extension Trait 패턴 활용