В последнее время я изучаю бенчмаркинг, меня всегда интересовали протоколирование данных программы и т.д. Мне было интересно узнать, можем ли мы реализовать собственный код использования памяти и эффективно реализовать наш собственный код потребления времени внутри нашей программы. Я знаю, как проверить, сколько времени требуется для запуска кода:
public static void main(String[]args){
long start = System.currentTimeMillis();
// code
System.out.println(System.currentTimeMillis() - start);
}
Я также рассмотрел Надежный Java-бенчмаркинг, часть 1: Проблемы, этот урок очень всеобъемлющий. Отображает отрицательные эффекты System.currentTimeMillis();
. Затем в учебнике предлагается использовать System.nanoTime();
(что делает его более точным?).
Я также рассмотрел Определение использования памяти в Java для использования в памяти. На веб-сайте показано, как вы можете его реализовать. Код, который был предоставлен, выглядит неэффективным, потому что человек звонит
long L = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
После этого он называет System.gc();
(4 * 4) = 16 раз. Затем повторите процесс снова.
Разве это не занимает память?
Итак, можно ли встраивать эффективный бенчмаркинг в вашу Java-программу?