플러터로 네이티브 기능 쓸 때 성능 이슈 없나요?
이번에 사이드 프로젝트로 플러터를 써보려고 하는데, 카메라, GPS, 블루투스 같은 네이티브 기능을 많이 써야 해서 고민입니다. 크로스플랫폼이라 성능이 떨어질까 봐 걱정되네요. 혹시 실제로 플러터로 네이티브 기능 많이 써보신 분 계신가요? 버벅임이나 호환성 문제가 있었는지 궁금합니다.
10 개의 답변
혹시 특정 기능에서 성능 이슈를 느꼈다면 구체적으로 어떤 상황인지 알려주실 수 있나요? 저도 비슷한 고민 중인데, 경험 공유해주시면 감사하겠습니다!
저는 GPS랑 카메라 동시에 써야 해서 플러터로 만들었는데, 생각보다 잘 돌아가서 놀랐어요. 다만 구형 기기에서는 메모리 관리가 좀 신경 쓰이더라고요. 프로파일링 툴로 체크해보세요.
성능보다는 패키지 유지보수 상태를 더 걱정하세요. 네이티브 기능 패키지 중에 오래된 건 업데이트가 안 돼서 최신 OS에서 문제 생길 수 있어요. 사용 전에 깃헙 스타나 최근 커밋 확인해보는 걸 추천합니다.
저는 블루투스 연동할 때 한 번씩 끊기는 문제 있었어요. 근데 플러터 자체 문제라기보다는 안드로이드 블루투스 스택 자체가 구려서 그런 거더라고요. iOS에서는 꽤 안정적이었습니다. 카메라는 별 이슈 없었어요.
플러터가 네이티브 기능을 직접 호출하는 게 아니라 채널을 통해 통신해서, 극한의 성능이 필요한 경우(예: 초당 60프레임 영상 처리)에는 미세한 지연이 있을 수 있어요. 일반적인 사용에서는 체감 못 할 수준입니다.
걱정되면 Platform Channel 직접 만들어 쓰는 방법도 있어요. 네이티브 코드를 플러터랑 섞어 쓰면 성능 100% 뽑을 수 있습니다. 근데 귀찮아서 보통은 패키지로 때웁니다. ㅋㅋ
걱정 마세요. 저도 처음에 똑같은 고민 했는데, 실제로 써보니 네이티브랑 차이 거의 못 느꼈어요. 오히려 코드 재사용성 덕분에 개발 시간이 반으로 줄었습니다. 플러터 강추합니다!
저도 사이드 프로젝트로 카메라랑 GPS 써봤는데, 버벅임 전혀 없었어요. 오히려 네이티브보다 개발 속도가 빨라서 좋았습니다. 블루투스는 flutter_blue_plus 같은 패키지 추천드려요. 호환성도 안드로이드/iOS 둘 다 괜찮았습니다.
플러터는 네이티브 위젯을 그리는 게 아니라 자체 렌더링 엔진을 쓰니까 UI 성능은 좋은데, 네이티브 기능 호출 시에는 약간의 딜레이가 있을 수 있어요. 그래도 실시간성이 중요한 게 아니면 괜찮습니다.
플러터는 네이티브 기능을 쓸 때 사실상 네이티브 코드로 동작하는 메커니즘이라 성능 이슈는 거의 없어요. Method Channel로 통신하긴 하지만, 오버헤드가 미미해서 카메라나 GPS도 부드럽게 돌아갑니다. 다만 블루투스는 패키지에 따라 차이가 있으니 잘 고르세요.