Java-календарь getTimeInMillis (), возвращающий то же самое время

Вы можете сделать это быстрее без импорта только с помощью magics :

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

Обратите внимание, что все переменные env являются строками, поэтому нет необходимости использовать ". Вы можете проверить, что env-variable настроена путем запуска: %env . Или проверьте все из них с помощью %env.

-4
задан Ole V.V. 31 March 2019 в 11:39
поделиться

1 ответ

tl; dr

Duration.between(       // Represent a span-of-time as a count of nanoseconds, to be calculated as hours-minutes-seconds.
    then ,              // Earlier in your code, capture the previous current moment: `Instant then = Instant.now() ;`
    Instant.now()       // Capture the current moment. 
)                       // Returns a `Duration` object, our elapsed time.
.toNanos()              // Get the total number of nanoseconds in the entire span-of-time. Returns a `long`. 

Захват текущего момента

Ваш код захватывает текущий момент, снимок, заморожен. Результирующий объект не обновлен . Вот что означает фраза «определенный момент времени» в классе JavaDoc.

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

Избегайте устаревших классов даты и времени

Класс Calendar ужасен и был вытеснен несколько лет назад классами java.time с принятием JSR 310. В частности, [ 115] заменяет GregorianCalendar обычную реализацию Calendar.

Instant

Современный подход к отслеживанию текущего момента использует класс Instant. Instant представляет момент в UTC.

Instant start = Instant.now() ;
…  // Do some stuff.
Instant stop = Instant.now() ;

Разрешение

В Java 9 и более поздних версиях текущий момент фиксируется с разрешением в микросекунды (6 десятичных знаков дробной секунды). В Java 8, Instant более старая реализация Clock ограничена захватом текущего момента в миллисекундах (3 десятичных знака). Во всех версиях Java класс Instant способен представлять момент в наносекундах (9 десятичных цифр). Но обычные компьютерные часы не могут точно так точно отслеживать время.

Duration

Рассчитать прошедшее время как объект Duration .

Duration duration = Duration.between( start , stop ) ;  // Represents a span of time in terms of hours-minutes-seconds.
long nanoseconds = duration.toNanos() ;                 // Converts this duration to the total length in nanoseconds expressed as a long.

System.nanoTime

Для микробенчмаркинга вы можете использовать System.nanoTime() . Этот метод фиксирует текущий момент в виде числа наносекунд с некоторой произвольной начальной точки. Осторожно: возвращаемое значение не не представляет текущий момент в соответствии с любыми часами или календарем. Но это полезно для отслеживания прошедшего времени при разрешении, возможно, более тонком, чем Instant.

long start = System.nanoTime() ;  // Some arbitrarily defined count of nanoseconds. *NOT* the current time/date by any clock/calendar. 
…  // Do some stuff.
long stop = System.nanoTime() ;
long nanoseconds = ( stop - start ) ;

JEP 230: Microbenchmark Suite

Для серьезных сравнительных тестов ознакомьтесь с недавно встроенной платформой сравнительного анализа, добавленной в Java 12 и более поздние версии на основе JMH . См. JEP 230: Microbenchmark Suite . [Тысячу сто сорок одна]

0
ответ дан Basil Bourque 31 March 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: