| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; q=dns; s= | |
| default; b=jpsFThKZjhcJlGrIRPTSbUZWcqpYv+iTwsmzDdpok2tl9GnC2EdnD | |
| g+licylCojU3BQ+P9OJP/5u2X/raBBiOOcjvDuSdeqnsD416dR9YZXuzH7J7E3VC | |
| im/n6cih2IN/dosqYH4/6KrP1SJnZazg1Zv9/FUwdgFMDVDmhvbcGc= | |
| DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
| :list-unsubscribe:list-subscribe:list-archive:list-post | |
| :list-help:sender:date:from:to:subject:message-id:reply-to | |
| :references:mime-version:content-type:in-reply-to; s=default; | |
| bh=5TnKEsWqcACGf5EtYVOs8LP6P1s=; b=wZejETPE1jr3TQyznOtzT+zL3dIj | |
| m4+T/9FDXR6WlJblfzHV1aOeDxZ/xRTutDO7wqhuzEwT3uzSBrU7Uze6vKqg8xQT | |
| Y0jzEnQMVC2yTdWzdEG/R5Lny/7Bh8NAfPoz3TjwwA4mAEO99uKlgjBQb2eV6wDT | |
| +DS3jkwdNIWjB20= | |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
| X-Spam-SWARE-Status: | No, score=-1.8 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.1 |
| Date: | Sun, 9 Jun 2013 13:53:51 +0200 |
| From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
| To: | cygwin AT cygwin DOT com |
| Subject: | GetSystemTimePreciseAsFileTime (was Re: [ANNOUNCEMENT] Updated: Cygwin 1.7.19) |
| Message-ID: | <20130609115351.GF12283@calimero.vinschen.de> |
| Reply-To: | cygwin AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| References: | <announce DOT 20130605093949 DOT GA3250 AT calimero DOT vinschen DOT de> <51AF530A DOT 7080306 AT shaddybaddah DOT name> <20130605162825 DOT GC3250 AT calimero DOT vinschen DOT de> |
| MIME-Version: | 1.0 |
| In-Reply-To: | <20130605162825.GC3250@calimero.vinschen.de> |
| User-Agent: | Mutt/1.5.21 (2010-09-15) |
On Jun 5 18:28, Corinna Vinschen wrote:
> On Jun 6 01:02, Shaddy Baddah wrote:
> > On 2013-06-05 19:39+1000, Corinna Vinschen wrote:
> > >- Drop support for Windows 2000 and Windows XP pre-SP3.
> >
> > I find this change interesting. In no way am I complaining about this,
> > releases matching the above are well past end-of-life anyway.
> >
> > But I am curious about the technical reason (and perhaps discussion)
> > that ruled Win 2K out.
> > [...]
> [...]
> There's also stuff we still not use a lot, foremost the Win32 API call
> CancelSynchronousIo which, if it had been introduced in NT4 already,
> would be probably heavily used by Cygwin (think signal handling).
> The next big thing developement-wise is not Windows 7, but Windows 8 (of
> all things!), because of the new GetSystemTimePreciseAsFileTime call,
> which I'm going to introduce into Cygwin pretty soon.
Or not. I just tested the GetSystemTimePreciseAsFileTime call and it's
a wonderful performance killer.
Below I pasted my simple testcase. It computes the average number of
CPU cycles per call to compare GetSystemTimeAsFileTime and
GetSystemTimePreciseAsFileTime with each other.
I tested the call on two 64 bit Windows 8 systems, one real machine,
one QEMU/KVM based virtual machine. On real hardware I get:
On the virtual machine, the results are:
Best case:
8 cycles for GetSystemTimeAsFileTime
15557 cycles for GetSystemTimePreciseAsFileTime
Worst case under load:
20 cycles for GetSystemTimeAsFileTime
17443 cycles for GetSystemTimePreciseAsFileTime
On real hardware, the results are much better, but the difference between
GetSystemTimeAsFileTime and GetSystemTimePreciseAsFileTime are still
terrible:
Best case:
9 cycles for GetSystemTimeAsFileTime
2761 cycles for GetSystemTimePreciseAsFileTime
Worst case under load:
18 cycles for GetSystemTimeAsFileTime
5874 cycles for GetSystemTimePreciseAsFileTime
Corinna
#include <stdio.h>
#include <stdint.h>
#include <windows.h>
void (WINAPI *pGetSystemTimeAsFileTime) (LPFILETIME);
void (WINAPI *pGetSystemTimePreciseAsFileTime) (LPFILETIME);
static inline uint64_t
rdtsc(void)
{
uint32_t low, high;
__asm __volatile("rdtsc" : "=a" (low), "=d" (high));
return (low | ((uint64_t)high << 32));
}
static void
cycle (void (WINAPI *f) (LPFILETIME), const char *name)
{
const int iter = 1000000;
int i;
uint64_t v;
FILETIME l;
v = rdtsc ();
for (i = 0; i < iter; i++)
f (&l);
v = rdtsc () - v;
v /= iter;
printf ("%6lld cycles for %s\n", v, name);
}
int main ()
{
HMODULE h = GetModuleHandle ("kernel32.dll");
pGetSystemTimeAsFileTime = (void (WINAPI *)(LPFILETIME))
GetProcAddress (h, "GetSystemTimeAsFileTime");
pGetSystemTimePreciseAsFileTime = (void (WINAPI *)(LPFILETIME))
GetProcAddress (h, "GetSystemTimePreciseAsFileTime");
if (!pGetSystemTimePreciseAsFileTime)
{
fputs ("GetSystemTimePreciseAsFileTime unsupported\n", stderr);
return 1;
}
cycle (pGetSystemTimeAsFileTime, "GetSystemTimeAsFileTime");
cycle (pGetSystemTimePreciseAsFileTime, "GetSystemTimePreciseAsFileTime");
return 0;
}
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |