java nanoTime vs nanossegundos C ++

votos
-2

Gostaria de imprimir os nanotimes de duas línguas e comparar o valor.

código Java

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

código 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;

Eu espero que os resultados sejam equivalentes, mas os resultados são diferentes ...!

Resultados

JAVA: 4459739378141 
C++   1584649009920663623

BTW: Se eu usar milissegundos os resultados são equivalentes. Mas eu preciso de mais dados em tempo precisão e infelizmente microssegundos não está lá em java.

Alguém pode me ajudar? Obrigado.

Publicado 19/03/2020 em 21:55
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Leia o Javadoc deSystem.nanoTime() (grifos nossos):

Este método só pode ser usado para medir o tempo decorrido e não está relacionada com qualquer outra noção de sistema ou parede-relógio. O valor retornado representa nanossegundos desde algum tempo origem fixa, mas arbitrária (talvez no futuro, assim que os valores podem ser negativos). A mesma origem é usada por todas as invocações deste método em uma instância de uma máquina virtual Java; outras instâncias de máquina virtual são propensos a usar uma origem diferente.

Por outro lado, no seu código C ++, since_epoché o tempo, bem, desde época (presumindo que o método não foi chamado caprichosamente; você pode verificar sua documentação também).

E System.currentTimeMillis()retorna:

a diferença, medido em milissegundos, entre o momento atual e meia-noite, 01 janeiro de 1970 UTC.

Assim que retorna o tempo desde a época também.

A documentação é um bom lugar para começar a entender o comportamento dos métodos.

Respondeu 19/03/2020 em 21:57
fonte usuário

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