Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Beginner
Dec 18, 1998

Replacement for Now() and Timer()

The simple BetterNow() function, shown here, replaces the built-in Now() function. It's faster (10 microseconds vs. 180 microseconds on a Pentium 166MMX) and more accurate, potentially supplying one-millisecond resolution, instead of 1000 milliseconds.

Because it's also faster and more accurate than Timer(), which clocks at 100 microseconds and provides 55 milliseconds resolution, it should also replace Timer, especially when Timer() is used to measure elapsed times. Besides, Timer() rolls over at midnight, and BetterNow() doesn't:

 
#If Win16 Then
	Private Declare Function timeGetTime Lib _
		"MMSYSTEM.DLL" () As Long
#Else
	Private Declare Function timeGetTime Lib "winmm.dll" _
		() As Long
#End If

Function BetterNow() As Date
	Static offset As Date
	Static uptimeMsOld As Long
	Dim uptimeMsNew As Long
	Const oneSecond = 1 / (24# * 60 * 60)
	Const oneMs = 1 / (24# * 60 * 60 * 1000)
	uptimeMsNew = timeGetTime()
	' check to see if it is first time function called or
	' if timeGetTime rolled over (happens every 47 days)
	If offset = 0 Or uptimeMsNew < uptimeMsOld Then
		offset = Date - uptimeMsNew * oneMs + CDbl(Timer) * _
			oneSecond
		uptimeMsOld = uptimeMsNew
	End If
	BetterNow = uptimeMsNew * oneMs + offset
End Function
Andy Rosa
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date