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



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

얼마전 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전에 반응을 해야 사용자들은 빠르게 작동한다고 생각하게 된다.