Это может быть удобно для выполнения тайм-кода, чтобы вы знали, сколько времени занимает процесс.Тем не менее, я нахожу общий способ сделать это небрежно, так как он должен иметь одинаковые отступы, что затрудняет чтение того, что на самом деле рассчитано.
long start = System.nanoTime();
// The code you want to time
long end = System.nanoTime();
System.out.printf("That took: %d ms.%n", TimeUnit.NANOSECONDS.toMillis(end - start));
Попытка
Я пришелКроме того, выглядит лучше, есть несколько преимуществ и недостатков:
Преимущества:
- Понятно, что происходит из-за отступа
- Он автоматически выведет, сколько времени прошло после завершения кода
Недостатки:
- Это не тот способ, которым предполагается использовать
AutoClosable
(уверен) - Создает новый экземпляр
TimeCode
, который не годится - Переменные, объявленные в блоке
try
, недоступны вне его
Может бытьиспользуется следующим образом:
try (TimeCode t = new TimeCode()) {
// The stuff you want to time
}
Код, который делает это возможным:
class TimeCode implements AutoCloseable {
private long startTime;
public TimeCode() {
this.startTime = System.nanoTime();
}
@Override
public void close() throws Exception {
long endTime = System.nanoTime();
System.out.printf("That took: %d ms%n",
TimeUnit.NANOSECONDS.toMillis(endTime - this.startTime));
}
}
Вопрос
Мой вопрос:
- Является ли мой метод на самом деле так плохо, как я думаю, это
- Есть лилучший способ для таймирования выполнения кода в Java, где вы можете четко видеть, что происходит по расписанию, или мне просто придется довольствоваться чем-то вроде моего первого блока кода.