인지속도와 스마트폰 앱 성능과의 관계



어떠한 앱 개발자든 자기가 만든앱이 안정적이면서 빠르게 작동하길 원할 것이다. 빠르다는 것은 화면이 끊김 없이 자연스럽게 애니메이션 된다던가, 사용자의 반응에 대한 피드백이 빠르다는 것을 말한다. 그래서 인간의 인지속도에 대해서 한번 찾아보게 되었고, 개발자들이 어느정도의 성능이 나오게끔 개발을 하면 될까 생각 해봤다.

얼마전 DEVIEW2013을 다녀온적이 있는데 High Performance Android App. Development 트랙에서 페이스북에서 타임라인의 리스트를 빠르게 하기위해 어떻게 해야 할까 라는 주제로 발표한 자료가 있다고 발표자가 말했다. 

여기에 보면 내가 궁금해 했던 인간의 인지속도와 앱의 성능에 대해 분석해놓은 자료를 볼 수 있다.

화면의 자연스러움

일반적으로 잘 만들어진 콘솔/PC게임을 보면 초당 60프레임을 기준으로 게임을 개발한다고 한다. 모바일의 경우 초당 30프레임은 나와야 화면이 부드럽게 게임을 즐길 수 있다고 한다.

예를 들어 60프레임이 나오기 위해서는 16.7ms로 프레임을 갱신 해야 한다. 

60fps : 16.7ms per frame

30fps : 33.3ms per frame

그래서 화면 전환을 할때라던가, 뷰를 움직일때 라던가 자연스럽게 보여지기위해서는 33.3ms을 주기로 프레임을 갱신을 해야된다는 것을 알 수있다. 

안드로이드 SDK에서도 이런 성능 측정을 위해 4.3부터 초당 fps를 그래프로 나타내주는 기능이 있다.  초록색 가로라인이 16.7ms로 프레임을 그린다는 기준이다. 저 라인에 근접 할 수록 끊기지 않고 자연스럽게 화면이 움직인다고 보면 된다.


 

사용자 반응성

페이스북의 발표를 보면 인간의 인지속도에 대한 통계를 바탕으로 어느정도의 반응성이 필요 할가에 대해서도 고민해보았다는것을 볼 수 있다. 

휴먼벤치마크 사이트를 보면 인간에 대한 인지속도를 측정 해놓은 자료들이 있다. 이 데이터를 보면 인간이 어떤 사물의 움직임이 대해 뇌가 인지하고 행동 하는데 까지 걸리는 시간이 평균 215ms라는 통계를 보여주고 있다.


이를 바탕으로 스마트폰 앱에서 어떤 기능을 눌렀을때 최소 215ms이전에는 해당 기능에 대한 반응이 있어야 된다. 구글 안드로이드 가이드라인 문서에도 100ms~200ms사이에 반응이 없다면 사용자들은 느린것으로 생각하게 된다고 설명 되어 있다.  

즉 정리 해보면

화면 갱신하는 프레임은 33.3ms 정도의 속도가 나와야 하며, 사용자가 어떤 액션을 취했을때 200ms전에 반응을 해야 사용자들은 빠르게 작동한다고 생각하게 된다. 

 




[책리뷰]안드로이드 앱 성능 최적화








안드로이드 앱 성능 최적화

국내도서>컴퓨터/인터넷

저자 : Herve Guihot / 장독대역

출판 : 프리렉(이한디지털리) 2012.04.25
상세보기


 


안드로이드 앱 개발자로 일하면서 그동안 몰랐던 앱 성능을 최적화하기 위한 방법을 소개한 책이다.


 


ArrayList와 LinkedList의 사용범위에 따른 코드 최적화방법과 NDK를 이용한 좀더 빠른 앱을 개발하는 방법을 소개 해두었다.


또한 DB의 트렌젝션을 이용한 효율적인 DB쿼리 방법또한 좋았다.


 


그리고 모바일앱에서 가장중요한 메모리! 효율적으로 사용하는 방법과 가비지컬렉션과 메모리 누수와의 관계에 대해서도 참 잘설명 되어 있다.


 


레이아웃 최적화법및 툴을 이용한 최적화 방법, 벤치마크와 프로파일링에 대해 기술 해놓았다.


배터리 최대한 적게 사용하기등등 안드로이드 중급개발자들이 한번씩 읽어보면 좋을듯 하다.


 


요즘 폰들이 고사양이라 그 동안 막무간으로 사용해던 것에해대해 한번쯤 생각 해보고 돌이켜 볼 수 있는 안드로이드 앱 개발자라면 꼭 한번쯤은 읽어 봤으면 좋겠다.