devxlogo

Replacement for Now() and Timer()

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 IfFunction 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 + offsetEnd Function
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist