react-native 에서 typeorm은 느리다?
기존 swift로 만든 iOS앱에서 select * 하는데 400ms에 끊던걸
3400ms로 끊고 ㅈㄹ
typeorm react-native에서는 내부 driver로
sqlite-storage (https://github.com/andpor/react-native-sqlite-storage)
사용하는걸 확인하고
sqlite-storage로 직접 쳐봤을 때 똑같은 퍼포먼스 보이는거 확인
좀 구글링해보다가
sqlite-storage가 javascript와 c++ 사이에 오버헤드를 해결하지 않았다는 문제 발견
typeorm은 코드관리면에서 굉장한 장점이지만
그거 이상으로 우리 서비스에선 퍼포먼스가 중요해서
노답이니까 딴거 찾아보기로 결정
스타 130따리지만 저번달까지 관리되었고 오버헤드 해결했다는 repo발견
quiick-sqlite (https://github.com/ospfranco/react-native-quick-sqlite)
심지어 patch-package를 사용하면 typeorm의 driver를 이걸로 바꿔낄수도 있음
document가 부실한게 맘에 안들지만 다른 방도가 없어서 R&D해보기로 결정
5시간 동안 개뻘짓해서 안되는거 확인
사실 안되는건지 내가 못한건진 모르겠지만 쨋든 더이상 내가 할 수 있는 부분이 없고
시간상으로도 더이상 붙잡고 있을 수가 없음
최후의 보루로 내일 realm 사용해보기로 결정
기존엔 우리가 가지고있는 데이터를 csv로 변환 -> 관계형DB로 변환해서 앱 내부 저장소에 넣고 그걸 sqlite등으로 실행시켰는데
realm은 .db가 아니라 독자적인 확장자 .realm을 사용하는걸 확인
csv를 realm형식으로 변경해서 앱 내부에 넣어서 퍼포먼스 확인해보기로 결정
사실 지하철에서 대충 찾아보니까 역시 js/c++사이에 오버헤드 문제가 있다고 함...
RN을 해보니까 네이트브iOS가 말도안되게 빠르다는게 체감된다...
이게 안된다면 진지하게 이쪽 로직이 꼭 프론트쪽에 붙어있어야 하나를 고민해보고
서버쪽에서 분산 처리해볼 방법을 생각해봐야겠다