Path: csiph.com!news.mixmin.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.c,comp.lang.c++ Subject: Re: what is the best way to get microseconds of time on Windows in C or C++ ? Date: Fri, 04 Nov 2022 15:05:35 -0700 Organization: None to speak of Lines: 50 Message-ID: <8735ayml3k.fsf@nosuchdomain.example.com> References: MIME-Version: 1.0 Content-Type: text/plain Injection-Info: reader01.eternal-september.org; posting-host="d74099c2b109b60a9d4b4d88adbab987"; logging-data="2148850"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18NUhpmNlkn6CypYgcyqsGX" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) Cancel-Lock: sha1:1OVqhe9hBUb2LJMF4dfQ6ks6d5A= sha1:EC/bYIwRxHCwSBn0x1GWVzEJGYA= Xref: csiph.com comp.lang.c:168134 comp.lang.c++:87246 Lynn McGuire writes: > On 11/4/2022 2:35 AM, Juha Nieminen wrote: >> In comp.lang.c++ Lynn McGuire wrote: >>> What is the best way to get microseconds of time on Windows in C or C++ >> It's a bit unclear whether you mean "time in microseconds units" or >> "time >> at the microseconds resolution". >> Because the latter may not be even possible (portable or not). Just >> because >> some time function returns time "in microseconds" that doesn't mean that it >> uses microsecond resolution (in other words, the value it returns may well >> change at longer intervals than every microsecond; probably *significantly* >> longer intervals). >> It is possible to get some kind of timing at the CPU clock cycle >> interval >> (in most modern CPUs, at least), which is about as accurate as you can >> possibly get, but I don't know if there are eg. some system functions that >> will return elapsed clock cycles converted into the equivalent amount of >> microseconds. > > Get time at the microseconds resolution. My calculation engine > creates a bunch of temporary files and I use the time to create unique > names for those temporary files. Seconds should be good enough for > uniqueness but I like adding microseconds as a guarantee. Something > like > uniquac1.out.009.20181972.20220912 An alternative is to keep a counter, incremented for each generated file name, and append it to the file name, perhaps resetting to 0 when the seconds count advances. If your only requirement is uniqueness, that should be good enough. Digression: I remember an implementation of gettimeofday() that did something like that (on SunOS, maybe?). The system clock had a resolution of 0.01 second, so the value of tv_usec on successive calls might be: 420000 420001 420002 430000 430001 430002 ... I don't remember whether the implicit counter was per-process or system-wide. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com Working, but not speaking, for XCOM Labs void Void(void) { Void(); } /* The recursive call of the void */