2014-03-01 2 views
0

Android 게임 개발을 시작했고 현재 사용중인 라이브러리 중 하나가 universal-tween-engine입니다. 저자는 성능 최적화를 기반으로 설계 결정을 내 렸습니다. API의 일부 측면에서는 유용성이 희생되었습니다.안드로이드에서 새로운 객체를 통해 객체 풀링을 선호해야합니까?

프로젝트를 GitHub 저장소로 포크 화하고 API를 정리하는 것을 고려하고 있었지만 Android 성능에 ​​대한 내용을 알지 못합니다. 표준 핫스팟 기반 JVM에서 객체 초기화 및 가비지 컬렉션의 오버 헤드에 대해 너무 걱정하지 않을 것입니다. 그 이유는 해당 플랫폼이이 라이브러리의 풀링 동작을 조기 최적화라고 생각할만큼 충분히 최적화했기 때문입니다.하지만 Android의 경우에는 아이디어 ....

핫스팟과 비교하여 안드로이드 (Gingerbread-> KitKat)에서 객체 생성 및 가비지 수집의 성능 특성은 무엇입니까? 동일한 클래스의 새 인스턴스를 반복적으로 만들지 만 (상태가 다른 경우) 해당 인스턴스를 풀링 할 가치가 있습니까?

답변

1

데스크톱 Java 앱과 달리 Android 기기는 현재 가상 시스템 Dalvik 위에 실행됩니다.

가비지 수집은 모바일 장치에서 상대적으로 비용이 많이 드는 경우 성능에 민감한 코드 경로에서 개체 할당을 피하려면 가비지 수집이 수백 밀리 초 동안 앱을 일시 중지하는 것이 일반적이지 않습니다. 사용자가 목록보기를 스크롤 할 때

물론 이것은 기기에 따라 다르며, Android는 하드웨어의 성능 향상 외에도 고급형 기기에서 앱이 사용할 수있는 메모리 용량을 제한합니다. 앱은 대개 더 많은 메모리를 사용할 수 있습니다 , 하단 장치에서 실행중인 경우보다.

휴대 기기는 오래되었지만 고급 기기를 사용하는 휴대 기기에서도 메모리 관리를 무시할 수는 없습니다.

먼저 Android (및 일반 휴대 기기)의 성능/메모리를 더 잘 이해할 것을 권합니다. 따라서 해당 라이브러리의 성능을 변경할 때 어떤 점을 개선하고 있는지 항상 확신 할 수 있습니다 !). 시작하기 좋은 곳은 공식 Best Practices for Performace입니다.

관련 문제