Re: [INTERNALS-WIN] [PATCH] Microsecond resolution and accuracy on Windows

From: Date: Mon, 01 Sep 2014 21:45:45 +0000
Subject: Re: [INTERNALS-WIN] [PATCH] Microsecond resolution and accuracy on Windows
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-77020@lists.php.net to get a copy of this message
Hi Stas, ----- Original Message ----- From: "Stas Malyshev" Sent: Monday, September 01, 2014
Hi!
It's much more optimized than what's there now, and slightly over the old implementation. Not sure if I should give the saved patch link, or the "live compare" (?) on Github, so I'll do both for now: http://realplain.com/php/microtime_5_4.diff https://github.com/matt-moo/php-src/compare/PHP-5.4.diff Against 5.4 since that's what I quickly worked on so it's ready for the next 5.4 release (Stas?). (Although I guess we're supposed to change the oldest branch usually?)
Looking at the patch, it looks like unfortunately it changes a global structure (_php_win32_core_globals) which breaks binary compatibility. I think if you move the additional value to the end of the structure it should be ok though, since other offsets should not change then.
I was wondering about that myself (back when it was changed last, March 2013) when a few members were removed from that structure, so I figured it was OK to put one back. :-) No problem with binary compatibility then...? http://git.php.net/?p=php-src.git;a=commitdiff;h=b903d2d6cdf9a9efac181a21e95ea93dc8a864dd#patch5
I'm also not sure how important it is how have it for 5.4. Does the problem that this patch fixes exist only in older versions of Windows or on all versions? What are the actual effects of this problem - is it just lower resolution of microtime or there can be something seriously wrong with the whole result? If it's just lower resolution, I'd prefer this to go into 5.5 as the change is pretty extensive.
I don't think the change is that extensive (maybe if you're comparing to current version ;-)). As I said in my first "5.4 - last call" reply, it's similar to the previous old version. You can see what was removed from time.c last March in the above diff... My changes are like a simplified version of that (there for over a decade), restored, but without the possibility of "seriously wrong results" (not an issue now either, but we've also had very low resolution). The issues, and these changes, don't affect Windows 8/Server 2012 and later (they have a high-res time function like *nix gettimeofday()). So Win 7 and before. See referenced bugs: #64633, #65626 (uniqid()) Thanks, Matt

« previous php.internals (#77020) next »