25.01.2011 / 16:24 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| dzanis, Сделай лучше подсчет фпс в проге на fscriptME и в проге на бейсике, и выложи. Так нагляднее будет сравнивать результаты. А то один говорит медленно, другой быстро)
__________________
let live |
25.01.2011 / 16:35 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| aNNiMON, Ок так и сделаю.несовсем понял твой пример про фпс в Микростатьи и хитрости J2ME А в басике какой метод возврашает миллисикунды?
|
25.01.2011 / 16:48 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| dzanis, Да тот пример старый, я откуда-то брал. Про бейсик, лучше спросить у народа, я его уже забыл)
__________________
let live |
25.01.2011 / 16:56 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| Просто я его уже пробывал,и фпс было на нуле.Я так понимаю раз это количество кадров в секунду,то счётчик iFPS++; надо ставить перед самим методом repaint();.Ладн разберусь.
|
25.01.2011 / 17:09 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| dzanis, Попробуй так long time, prevtime, delta;
int framecount, fps;
/**/
time = System.currentTimeMillis();
delta = time - prevtime;
framecount++;
if(delta >= 1000) {
fps = framecount * 1000 / delta;
prevtime = time;
framecount = 0;
}
__________________
let live |
25.01.2011 / 17:21 | |
MG42 Пользователь Сейчас: Offline
Регистрация: 12.01.2011
| dzanis (25.01.2011/16:35) А в басике какой метод возврашает миллисикунды?10 m%=millisecоnds(0) 20 програма x.... 300 m1%=milliseconds(0)-m% 310 print m1%//возратит исполнение(програмы x) в милисекундах
|
25.01.2011 / 17:31 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| MG42, спасибо,суть понял. aNNiMON я нашол и портанул такой пример: static long FPS, FPS_Count, FPS_Start;
static String getFPS() {
FPS_Count += 1;
if (FPS_Start == 0) {
FPS_Start = System.currentTimeMillis();
}
if (System.currentTimeMillis() - FPS_Start >= 1000) {
FPS = FPS_Count;
FPS_Count = 0;
FPS_Start += 1000;
}
return Long.toString(FPS);
}
перед методом repaint();просто пишем g.setColor(0xFF0000);
g.drawString(getFPS(), 0, 0, 20);
|
26.01.2011 / 08:52 | |
aleksey Пользователь Сейчас: Offline
Имя: Алексей Откуда: Saint-Petersburg Регистрация: 22.01.2010
| dzanis (25.01.2011/16:56) Просто я его уже пробывал,и фпс было на нуле.Я так понимаю раз это количество кадров в секунду,то счётчик iFPS++; надо ставить перед самим методом repaint();.Ладн разберусь.Не совсем. Когда графики на экран выводится много, то телефон между вызовами repaint() может не успевать нарисовать всё на экране и в следствие этого начинает в прямом смысле халявить, т.е пропускать некоторые вызовы repaint(). Поэтому если ты поставишь там iFPS++, то он может быть больше чем на самом деле. Чтобы этого не происходило надо после repaint() добавить serviceRepaints(). Таким образом ты заставляешь телефон перерисовывать экран всегда, а не лениться
|
26.01.2011 / 14:39 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| aleksey, Про serviceRepaints() я интуитивно догадывался.Этот метод часто использовали на ранних моделях,например сименсах.Но сейчас разница мала заметна,т.к. мобилы с довольно мошными процами.
|
26.01.2011 / 21:12 | |
aleksey Пользователь Сейчас: Offline
Имя: Алексей Откуда: Saint-Petersburg Регистрация: 22.01.2010
| dzanis, да это конечно не обязательно. Но разница бывает ощутима. И 2 дня назад я в этом убедился. У меня достаточно много графики рисуется на экране и когда начинается постоянная перерисовка, то появляются тормоза. Как я с этим не боролся, всё равно немного тормозило. Но как поставил serviceRepaints() мои проблемы исчезли Кстати перерисовка заданной области даёт заметный прирост скорости |