2019. 5. 19. 19:03 IT/유니티 Tip & 파헤치기
Unity ECS (Entity Component System) Study - 2. 성능 밴치마크
ECS 개요는 알겠는데, 대체 얼마나 빨라지길래 스크립팅 방식을 바꿔가면서까지 제공을 하는 걸까요?
그래서 한 번 유니티에서 제공해주는 샘플앱을 이용해 간단하게 벤치마크 테스트 해보았습니다.
* 아래 결과는 제 컴퓨터에서 18년 12월 28일 기준으로 수행된 결과입니다.
* 사양 - i5-6600 / GTX 970 / Ram 15GB
* 실행 프로젝트는 유니티 ECS 샘플 프로젝트의 TwoStickShooter 입니다.
* job system과 burst compiler를 고려하지 않고, 단순히 오브젝트 리젠 갯수를 늘린 결과입니다.
* 오브젝트 무한리젠 ( 매 업데이트(0.02)마다 오브젝트 10개씩 생성)
* Classic
- 약 30FPS 아래로 내려갈 때의 프로파일링 결과입니다.
- 총 오브젝트 갯수가 6800개를 넘어가자 어마어마하게 끊깁니다.
* hybrid ECS
- 약 30FPS 아래로 내려갈 때의 결과입니다.
- 총 오브젝트 갯수가 21000개 정도 이상되니 끊기네요
- 특이한 점은 classic은 끊기다가 다시 조금 회복되다 또 끊기는 반면에 Hybrid는 더더더 느려집니다.
*Pure ECS
- 30 FPS 이하로 떨어지질 않아요 하단 이미지가 실행중인 이미지인데 저 상태에서도 굉장히 부드럽습니다.
- 다만 특이한 점은 총 오브젝트 갯수가 균일하게 약 2000개 밖에 안 찍힙니다. 화면상으로만 봐도 몇 만개는 되보이는데 말이죠. ( 이 부분에 대해서는 좀 더 ECS 시스템에 대한 공부가 필요할 듯하네요)
번외로 Pure ECS가 30 FPS 이하로 떨어지는 구간이 대체 언제쯤일지 테스트를 해보았는데, 매 업데이트(0.02초)마다 적 오브젝트를 50개씩 만드니 아래와 같이 떨어지긴 하더군요 (참고로 적오브젝트는 계속 총알 오브젝트를 날립니다)
Result
- 거의 성능 차이가 classic을 1이라 했을 때, hybrid가 3, pure가 5~10 정도로 차이가 나는 듯 보이는 것 같습니다.
* 다음 포스팅부터는 hybrid ECS를 사용하는 방법 및 사용하면서 발생했던 오류 위주로 포스팅 시작하도록 하겠습니다.
* 유니티 샘플 프로젝트 경로를 같이 올리려했는데 반년 사이에 많은 변화가 있었는지 git 저장소에 TwoStickShooter를 비롯해 제가 가진 예전 샘플들이 없어졌더군요 ; (너무 바뀌어서 같은 프로젝트인지도 확실치 않지만 최근 샘플을 공유드립니다.)
- git https://github.com/Unity-Technologies/EntityComponentSystemSamples
* 글을 쓰는 날(19.5.19)을 기준으로는 ECS 벤치마크 데이터가 빈번하게 검색되어 나오는 것 같네요. 더 궁금하시면 영문으로 찾아보시면 만족할만한 자료가 나올 듯 합니다.
* 개인이 공부하며 하는 포스팅이기에 잘못된 부분이 있을 수 있습니다.
혹시 잘못되거나 문제시 되는 부분이 있으면 지적 부탁드립니다.
'IT > 유니티 Tip & 파헤치기' 카테고리의 다른 글
Unity ECS (Entity Component System) Study - 3. Hybrid ECS 스크립팅 (0) | 2019.07.17 |
---|---|
Firebase 사용기 - Functions (0) | 2019.05.19 |
firebase 사용기 - DB (Firestore) (0) | 2019.05.18 |
firebase 사용기 - 인증 ( auth ) (0) | 2019.05.18 |
Firebase 사용기 - 1. 개요 (0) | 2019.05.18 |