Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Замер FPS / 3 сообщений из 3, страница 1 из 1
06.12.2013, 12:15
    #38491524
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замер FPS
Доброго времени суток всем!

Делаю игрушку на андроиде, на эмуляторе ну очень медленно выполняется, решил замерить FPS.
Может кривовато, но смысл такой: есть две переменные mOldTime и mCurTime, отвечающие за отсечки времени в миллисекундах, и переменная mFPS, которая каждую итерацию цикла процесса увеличивается на 1 и сбрасывается в 0, когда разница между отсечками превышает 1000 миллисекунд (1 секунду).
Получилось где-то 7-8 кадров в секунду.
Но вот никак не пойму, почему когда вместо секунды устанавливаю минуту (разница между отсечками 60000 миллисекунд), то FPS получается 1. Что я делаю не так?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
    ...
    private Paint mPaint;
    private Paint mPaint2;
    private Rect mRect;
    private StringBuilder message = new StringBuilder();
    
    private long mCurTime;
    private long mOldTime = 0;
    private long mFPS = 0;
    
    ...
    private long getCurTime()
    {
    	Date date = new Date();
    	return date.getTime();
    }
    
    public void setCurTime()
    {
    	mCurTime = getCurTime();
    }
    
    public void setOldTime()
    {
    	mOldTime = getCurTime();
    }
    
    @Override
    public void run()
    {
        while (mRunning)
        {
            Canvas canvas = null;
            try
            {
                // подготовка Canvas-а
                canvas = mSurfaceHolder.lockCanvas();
                synchronized (mSurfaceHolder)
                {
                	// Подсчет FPS
                	mFPS++;
                	setCurTime();
                	if (mCurTime - mOldTime >= 1000)
                	{
                		message.setLength(0);
                		message.append(mFPS);
                		mFPS = 0;
                		setOldTime();
                	}
                    // собственно рисование
                    canvas.drawRect(mRect, mPaint2);
                    canvas.drawText(message.toString(), 30, 30, mPaint);
                }
            }
            catch (Exception e) { }
            finally
            {
                if (canvas != null)
                {
                    mSurfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
...
Рейтинг: 0 / 0
06.12.2013, 15:16
    #38491933
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замер FPS
Проблема была, оказывается, не в измерениях, а в выводе результата на экран. Исправил.
Но все же вопрос к знающим людям:
ФПС слишком маленький (я, правда, не проверял это на реальном устройстве - нету под рукой),
может я рисование как-то криво и неоптимально делаю?
Может кто другие приемы использует?
...
Рейтинг: 0 / 0
07.12.2013, 00:44
    #38492519
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замер FPS
на эмуляторе вполне возможно.
про канву ничего сказать не могу.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Замер FPS / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]