Мне нужно проанализировать сложность некоторых алгоритмов в Java. Для этого я планирую предоставить большое количество вкладов и измерить время, затраченное на реализацию Java. Каков наиболее точный и точный способ проверки времени между некоторыми строками кода? Мне нужна точность в миллисекундах ...Как измерить время, затраченное кодом Java?
ответ
Вы можете получить разрешение наносекунды, даже используя System.nanoTime()
.
Однако, вы можете рассмотреть точки в следующем:
Вопрос, который вы упомянули, хорош. Я прочитаю его полностью ... –
System.nanoTime()
Используйте или System.currentTimeMillis()
, чтобы получить как время начала и окончания вашего кода. Имейте в виду, что микро-тесты измеряют только основные аспекты производительности JVM. Помните о фазе прогрева для JVM, после чего начинается JIT.
Я предлагаю использовать System.nanoTime() http://stackoverflow.com/questions/11591000/system-currentimeinmillis-vs-system-nanotime – SpringLearner
long start = System.currentTimeMillis();
// your code
long end = System.currentTimeMillis();
long diff = end-start;
или
long start = System.nanoTime();
// your code
long end = System.nanoTime();
long diff = end-start;
long diffInMillis = diff/1000000;
Я предлагаю не использовать currenttimemillis для того, чтобы знать время выполнения – SpringLearner
Скажем, у вас есть конкретный метод, который вы хотели бы поставить под микроскопом. Вы можете сделать это следующим образом:
long time1 = System.nanoTime();
thatMethod();
long time2 = System.nanoTime();
long timeTaken = time2 - time1;
System.out.println("Time taken " + timeTaken + " ns");
компьютеры очень быстро, так что может случиться так, что разница во времени при использовании getTimeMillis()
возможно ноль. Следовательно, используйте nanoTime()
Вы также можете использовать Caliper
. У них есть видео, чтобы начать. Кроме того, внимательно прочитайте ответ, на который указывает creichen
. В нем много замечательных вещей.
long startTime = System.currentTimeMillis();
//code lines whose time you want to calculate
long endTime = System.currentTimeMillis();
System.out.println("Took "+(endTime - startTime) + " ms");
Я так искушаюсь '-1', но тогда .. пожалуйста, отформатируйте свой код. Не указывайте, что уже было сказано. –
Используйте библиотеку, такую как Speed4j. Это должно не только оценивать вызовы, но также предоставлять статистику в журналах, а также вы можете видеть их удаленно через JMX. Лучше использовать такую библиотеку, а не размещать System.current .. вызовы по всему коду.
+1 для добавления чего-то нового =) –
круто! действительно хорошее дополнение –
- 1. Как измерить время, затраченное на запрос sqlite3?
- 2. Как измерить время, затраченное на C# NetworkStream.Read?
- 3. Как измерить время, затраченное c: import tag
- 4. Как измерить время, затраченное на извлечение DB в java
- 5. Как измерить время, затраченное на деятельность в android
- 6. Как измерить время, затрачиваемое websocket для ответа
- 7. Время, затраченное на процедуру
- 8. Как измерить фактическое время работы Java-процесса?
- 9. Как измерить Java GC Stop Мировое время?
- 10. Как измерить время выполнения потока Java?
- 11. Как измерить время, затрачиваемое штормовым заданием
- 12. Измерьте время, затраченное программой
- 13. Время, затраченное на загрузку uiscrollview
- 14. Как измерить время запуска JVM?
- 15. Как измерить время вычисления
- 16. Мера общее время, затраченное процессом на IO
- 17. Как профилировать время, затраченное на выполнение задачи в SBT
- 18. Общее время, затраченное на среднее время, потраченное на все темы
- 19. Как рассчитать общее время, затраченное службой в java?
- 20. Как рассчитать время, затраченное на Java, из предоставленного часа ТОЛЬКО
- 21. Как измерить время работы сервлета?
- 22. Как измерить точную производительность (время, затраченное на выполнение) двоичного файла, который принимает входные данные от пользователя
- 23. Как я могу измерить время, затраченное веб-службой на возврат XML-канала?
- 24. Как измерить время, затраченное на пространство имен для запуска тестов clojure?
- 25. Время, затраченное на выполнение Javascript
- 26. Время, затраченное на консоль win32
- 27. получить Время, затраченное на метод
- 28. Рассчитать время, затраченное редукторами hadoop
- 29. Grails - Как рассчитать время выполнения, затраченное на любое действие?
- 30. Время, затраченное на выполнение цикла
Не совсем! Я искал что-то вроде System.nanoTime(), однако вышеупомянутый вопрос касался некоторого формального бенчмаркинга. Это требует некоторого глубокого чтения, которое может не помочь случайному читателю. –
@MangatRai: «случайный читатель» опасен в этой области: почти все случаи, когда вы действительно нуждаетесь в «проверке времени между некоторыми строками кода», сильно зависят от того, что обсуждается в этом вопросе. Без этого вы получите бесполезные или вводящие в заблуждение данные и сделаете неправильные решения. –
Какой ваш вопрос связан с временной сложностью? Понимаете ли вы, что временная сложность - это статический анализ, тогда как вы запрашиваете сравнительный анализ производительности? – Val