Как рассчитать разницу во времени между двумя событиями в Java? - PullRequest
6 голосов
/ 26 декабря 2010

Я хочу вычислить разницу во времени в секундах между моментами времени. Например, во время выполнения программы я устанавливаю значение переменной и через некоторое время снова меняю ее. Какая разница во времени между недавним изменением значения по сравнению с предыдущим значением?

Ответы [ 4 ]

10 голосов
/ 26 декабря 2010

Вы можете использовать System.currentTimeMillis(), чтобы сохранить текущее время с разрешением в одну миллисекунду. Просто экономьте время, когда происходит первое событие (лучше использовать длинную переменную для хранения этого значения) и снова, когда происходит второе событие. Разница, разделенная на 1000, даст вам разницу во времени в секундах.

4 голосов
/ 26 декабря 2010

Вы можете сделать что-то столь же простое, как это:

long begin = System.currentTimeMillis();
doWork();
long end = System.currentTimeMillis();

long dt = end - begin;

Более зрелым способом (особенно, если вам нужно делать это много раз во многих местах) является использование библиотеки.Посмотрите на perf4j .Вы можете поместить @Profiled аннотацию на методы, и она автоматически сгенерирует некоторую статистику и запишет ее в файл журнала.

2 голосов
/ 26 декабря 2010

Сохраните текущее время, когда вам нужно получить значение из System.nanoTime(), и вычтите любые два из этих значений, чтобы получить разницу в наносекундах.

(Путем целочисленного деления сначала на миллион, а затем на тысячу, вы получите время в секундах с тремя десятичными знаками, которое печатается красиво.)

1 голос
/ 26 декабря 2010

Просто извлеките его из системы и сохраните в длинных данных. Вы можете сделать математику на этих длинных, чтобы вычислить разницу во времени.

long start = System.currentTimeMillis();

//do stuff
//do more stuff

long end = System.currentTimeMillis();
...