Сколько времени выполнялась программа (Java)

671
29 декабря 2016, 06:54

Блок кода :

 long m = System.currentTimeMillis();
 System.out.println(m);

Выдает вот такое значение : 1482923121138

Как не пытался конвертировать и где только не гуглил,выход так и не нашел.

Мне нужно преобразовать полученное значение в секунды. Т.е. вывести на экран время выполнения программы.

Answer 1

попробуйте

long m = System.currentTimeMillis();
// Код
System.out.println(System.currentTimeMillis() - m);
Answer 2

System.currentTimeMillis() - возвращает количество миллисекунд прошедших с полуночи 1 января 1970 года, это называется UNIX-время.

Чтобы посчитать сколько времени выполнялся какой-то кусок кода, нужно посчитать разницу, т.е. что-то типа:

long time = System.currentTimeMillis();
someMethod();
// some code
System.out.println(System.currentTimeMillis() - time);
Answer 3

Для замера воспользуйтесь методом:

/**
 * @param method метод для замера
 * @param timeUnit единица измерения
 * @return время работы
 */
private static long timer(Runnable method, TimeUnit timeUnit) {
    long time = System.nanoTime();
    method.run();
    time = System.nanoTime() - time;
    return TimeUnit.NANOSECONDS.convert(time, timeUnit);
}

Использовать так:

long time = timer(() -> {
        System.out.println("hello world");
}, TimeUnit.NANOSECONDS);
System.out.println(time);
Answer 4

Я обычно делаю так:

long time = System.nanoTime();  
// Код, который нужно померить 
time = System.nanoTime() - time;  
System.out.printf("Elapsed %,9.3f ms\n", time/1_000_000.0);
Answer 5

Вы понимаете что в java измерить производительность одним разом нельзя. Причина динамичная компиляция. Вам требуется измерять множество раз код.

Тоесть это, не совсем правильно, вот 1 000 раз измерить и на больших значениях, хорошо.

long m = System.currentTimeMillis();
// Код
System.out.println(System.currentTimeMillis() - m);
READ ALSO
Главный поток медленнее дополнительного ? что делается в главном потоке андроид смартфона

Главный поток медленнее дополнительного ? что делается в главном потоке андроид смартфона

Вот игровой цикл, перед тем как рисовать, блокируем канвас, рисуем и потом разблокируем и видим кадрКак я понял принцип такой

463
Тонкости Espresso

Тонкости Espresso

Пробую писать на espresso with cucumberИ в одном из примеров наткнулся на такую строчку:

469
Сложение 2 чисел типа short в Java

Сложение 2 чисел типа short в Java

Итак, тип short - от -32768 до 32767

533