Java nanoTime против наносекунд C ++

голоса
-2

Я хотел бы напечатать nanotimes из двух языков и сравнить значение.

JAVA код

long nano_startTime = System.nanoTime();
System.out.println(nano_startTime);

C ++ код

system_clock::time_point begin = system_clock::now();
auto since_epoch = begin.time_since_epoch(); // get the duration since epoch
std::cout << std::to_string(duration_cast<nanoseconds>(since_epoch).count()) << std::endl;

Я ожидаю, что результаты будут эквивалентны, но результаты разные ...!

Результаты

JAVA: 4459739378141 
C++   1584649009920663623

КСТАТИ: Если я использую миллисекунды результаты эквивалентны. Но мне требуется более точное время данных и, к сожалению микросекунды не существует в Java.

Кто-нибудь может мне помочь? Благодарю.

Задан 19/03/2020 в 23:55
источник пользователем
На других языках...                            


1 ответов

голоса
0

Read в Javadoc изSystem.nanoTime() (подчеркивание добавлено):

Этот метод может быть использован только для измерения затраченного времени и не связан с каким - либо другим понятием системы или на стену часов времени. Возвращаемое значение представляет наносекунд с момента некоторого фиксированного , но произвольный момент времени происхождения (возможно , в будущем, так что значения могут быть отрицательными). Же происхождение используются всеми вызовами этого метода в экземпляре виртуальной машины Java; другие экземпляры виртуальных машин могут использовать различное происхождение.

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

И System.currentTimeMillis()возвращается:

разница, измеряется в миллисекундах, между текущим временем и в полночь 1 января 1970 UTC.

Так что возвращает время с начала эпохи , а также.

Документация является хорошим местом, чтобы начать понимать поведение методов.

Ответил 19/03/2020 в 23:57
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more