2012-07-03 2 views
0

Я хотел бы посмотреть, сколько времени требуется для выполнения определенного метода в моем приложении для Android. Моя первая мысль была сделать что-то вроде этого:Оптимизация кода; измерять время между разделами кода

Date date1 = new Date(); 

doStuff(); 

Date date2 = new Date(); 

//compare date difference in ms 

Но для начала, дата объекты не кажется, есть .getMilliseconds(), и то, что им после. Есть ли более простой и/или лучший способ решить эту проблему?

Благодаря

+0

Вы можете использовать 'System.currentTimeMillis()' http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html# currentTimeMillis% 28% 29 – DNA

+3

Вы просмотрели методы, которые * * доступны в 'Date'? 'System.nanoTime' - лучший подход в любом случае, или' System.currentTimeMillis() ', но вы должны были бы найти' Date.getTime() 'в любом случае. –

+0

Кстати, для бенчмаркинга я бы сказал, что если важна различная точность nanoTime и currentTimeMillis, то вы не будете проходить тест достаточно долго! Для синхронизации одной операции nano является более точным. См. Также http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – DNA

ответ

3

Вы, вероятно, хотите использовать System.nanoTime() сделать свой отсчет времени, так как он использует самые высокие точности таймер доступен. Еще одна вещь, которую нужно сделать при проверке эффективности кода - это не просто запускать ее один раз, а повторять ее несколько раз, а средняя оценка - как оценка. Это дает лучшие результаты в долгосрочной перспективе, так как использование ЦП может увеличиваться, если какая-то другая программа также пытается запустить.

+0

Спасибо, что мне нужно – Johan

0

Что случилось с System.currentTimeMillis()?

long before = System.currentTimeMillis(); 
doStuff(); 
long after = System.currentTimeMillis(); 
+0

http://stackoverflow.com/questions/351565/system-currenttimemillis-vs-system-nanotime – Johan

+0

Ах, не пробовал это, прежде чем просто прочитать документацию –

0

Вы можете использовать Android инструменты профилирования, которые могут делать такого рода вещи в хорошем графическом виде, как приложение работает в эмуляторе.

Больше информации здесь: http://developer.android.com/tools/debugging/debugging-tracing.html

Смежные вопросы