본문 바로가기

구글과인터넷/안드로이드

안드로이드 Android FPS 구하기 타이머

[ Android ] FPS 구하기


 현재 개발중인 App의 FPS를 물어보시는 분이 많아서,
결국 구하는 방법을 만들었다.

 공식만 알고 나니 간단했다.

먼저 전역 변수로 세가지를 셋팅!

long fpsStartTime = 0L;             // Frame 시작 시간

int frameCnt = 0;                      // 돌아간 Frame 갯수

double timeElapsed = 0.0f;         // 그 동안 쌓인 시간 차이

void 반복 함수(){
            
            //시간 차이 구하기 

long fpsEndTime = System.currentTimeMillis(); 

float timeDelta = (fpsEndTime - fpsStartTime) * 0.001f;

// Frame 증가 셋팅 

frameCnt++;

timeElapsed += timeDelta;


// FPS를 구해서 로그로 표시
if(timeElapsed >= 1.0f){

    float fps = (float)(frameCnt/timeElapsed);

        Log.d("fps","fps : "+fps);

         

         frameCnt = 0;

         timeElapsed = 0.0f;

}

// Frame 시작 시간 다시 셋팅 

fpsStartTime = System.currentTimeMillis();


 꼭! App 시작 부분에 fpsStartTime을 셋팅하는 것을 잊지마세요.ㅎ

 

 그럼 FPS를 잘 조절하시면서 좋은 App 만드세요.

오늘도 즐코딩! 



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

출처: http://gogorchg.tistory.com/entry/Android-%ED%94%84%EB%A0%88%EC%9E%84-%EC%86%8D%EB%8F%84-%EC%A1%B0%EC%A0%88


쓰레드를 조절할 때, postDelay를 이용해서 프레임 속도를 조절하는데요.

Opengl을 사용할 경우 라이브러리 자체내에서 스레드를 돌리기 때문에

프레임 속도를 조절하기가 힘든 경우가 있었습니다.

그래서 이같은 소스가를 사용하는데요.

private static long targetFrameInterval = 1000L / 30L;  // 프레임 속도 30

private long frame = 30L;

// 스레드 콜백 함수 (무한 반복 하는 함수)
public synchronized void onDrawFrame(GL10 gl) {

// 프레임 처음 시간 설정

long frameStartTime = System.currentTimeMillis();

//.. 뭔가 뿌려주기 위한 소스 등등.

// 프레임 시간을 넘기면 그 시간 만큼 정지

long frameEndTime = System.currentTimeMillis();

long delta = frameEndTime - frameStartTime;

if (targetFrameInterval - delta > frame) {

try {

Thread.sleep(targetFrameInterval - delta);

} catch (InterruptedException e) {}

}
 


 저두 구글링을 통해서 알아낸 겁니다.

알았다기 보단 퍼 온거죠..^^;;; 

사이트를 잊어버려서.. 결국 이렇게 올렸다는..헤헤