java nanoTime vs C ++ nanosekunder

stemmer
-2

Jeg ønsker å skrive ut nanotimes fra to språk og sammenligne verdien.

JAVA-kode

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

C ++ kode

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;

Jeg forventer at resultatene skal være tilsvarende, men resultatene er forskjellige ...!

resultater

JAVA: 4459739378141 
C++   1584649009920663623

BTW: Hvis jeg bruker millisekunder resultatene er likeverdige. Men jeg krever mer presisjon time data, og dessverre mikro er ikke der i java.

Kan noen hjelpe meg? Takk.

Publisert på 19/03/2020 klokken 21:55
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Les den Javadoc avSystem.nanoTime() (uthevelse tilføyd):

Denne fremgangsmåte kan bare brukes til å måle medgått tid, og er ikke knyttet til noen annen oppfatningen av systemet eller vegg-klokketid. Verdien som returneres representerer nanosekunder siden noen faste, men vilkårlig opprinnelse tid (kanskje i fremtiden, slik at verdiene kan være negativ). Den samme opprinnelse brukes av alle anrop av denne fremgangsmåten i en forekomst av en Java virtuell maskin; andre virtuelle maskin tilfeller er sannsynlig å bruke en annen opprinnelse.

På den annen side, i C ++ kode, since_epocher tiden, vel, da epoken (forutsatt at metoden ble ikke capriciously heter, du kan sjekke dokumentasjonen også).

Og System.currentTimeMillis()avkastning:

forskjellen, målt i millisekunder, mellom gjeldende klokkeslett og midnatt, 1 januar 1970 UTC.

at avkastning tiden siden epoken også.

Dokumentasjon er et godt sted å begynne å forstå oppførselen til metoder.

Svarte 19/03/2020 kl. 21:57
kilden bruker

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