Browse DevX
Sign up for e-mail newsletters from DevX

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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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
	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) * _
		uptimeMsOld = uptimeMsNew
	End If
	BetterNow = uptimeMsNew * oneMs + offset
End Function
Andy Rosa
Comment and Contribute






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



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