[AccessD] Article for DBA newsletter / website

John W. Colby jwcolby at colbyconsulting.com
Thu Feb 10 12:45:37 CST 2005


This is not a TIMER, i.e. it does not cause something to run, rather it
times how long it takes something to run.  So it does not cause any
flickering.  

John W. Colby
www.ColbyConsulting.com 

Contribute your unused CPU cycles to a good cause:
http://folding.stanford.edu/

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Christopher
Hawkins
Sent: Thursday, February 10, 2005 1:05 PM
To: accessd at databaseadvisors.com
Subject: re: [AccessD] Article for DBA newsletter / website


Just FYI...does this time class of your avoid the "flicker" the typically
accompanies the resetting of a Form object's TimerInterval property?  If so,
I will use your code until the end of my days!  ;)

-Christopher-

----------------------------------------
 From: "John W. Colby" <jwcolby at colbyconsulting.com>
Sent: Wednesday, February 09, 2005 10:36 PM
To: "'Access Developers discussion and problem solving'"
<accessd at databaseadvisors.com>
Subject: [AccessD] Article for DBA newsletter / website 

I am writing an article for DBA's new website content (and maybe a
newsletter, not sure exactly).

May I suggest that anyone out there interested in being published do the
same. Contact Jim Lawrence if you would like to contribute code or articles.

At any rate, as you might imagine I am going to do a class demo, a timer. If
you've been around the group long you have seen the class. It is a variant
of old ADH code and looks like:

Option Compare Database
Option Explicit
'
'This class is so simple that I will not use the normal class framework
interface. 'This class never loads children, never does anything that should
cause problems 'so the framework interface is generally unneeded. ' Private
Declare Function apiGetTime Lib "winmm.dll" _ Alias "timeGetTime" () As Long

Private lngStartTime As Long

'THESE FUNCTIONS / SUBS ARE USED TO IMPLEMENT CLASS FUNCTIONALITY '*+Class
function / sub declaration Function EndTimer() EndTimer = apiGetTime() -
lngStartTime End Function

Sub StartTimer()
lngStartTime = apiGetTime()
End Sub
'*-Class function / sub declaration

This class allows me to create instances on demand to time things. One of
the things I timed awhile back is how long it takes to do a bunch of
different vb code things. For example:

How long to call a function, passing no parameters.
How long to call a function passing a parameter.
How long to call a function returning a value from the function. How long to
do a left$()

Etc.

A couple of examples of these tests follow:

Function TestLeftStr()
Dim lclsTimer As clsTimer
Dim lngCnt As Long
Dim str As String

Set lclsTimer = New clsTimer
lclsTimer.StartTimer
For lngCnt = 1 To 100000
str =
Left$("johncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohnco
lbyjohncolby", 10)
Next lngCnt
Debug.Print lclsTimer.EndTimer
End Function

Function RetStr() As String
RetStr =
"johncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjoh
ncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncol
byjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolbyjohncolby"
End Function
Function PassStr()

End Function
Function TestPassParam()
Dim lclsTimer As clsTimer
Dim lngCnt As Long
Dim str As String
Dim str2 As String

Set lclsTimer = New clsTimer
str = "johncolby"
str2 = "marycolby"
lclsTimer.StartTimer
For lngCnt = 1 To 100000
PassStr
Next lngCnt
Debug.Print lclsTimer.EndTimer
End Function
Function TestRetParam()
Dim lclsTimer As clsTimer
Dim lngCnt As Long
Dim str As String

Set lclsTimer = New clsTimer
lclsTimer.StartTimer
For lngCnt = 1 To 100000
str = RetStr()
Next lngCnt
Debug.Print lclsTimer.EndTimer
End Function

Etc. Etc.

I thought for my first article I would build up a little database where we
(as a group) could request timings of specific functionality that we are
interested in seeing run. I will be building a table and adding code to
store the timing results to the table. Anyone interested in having something
timed and showing the results to the group can email me working code and I
will include it in the project. As you can see you can do your own timing on
your own systems, however if you want to compare apples to apples the timing
has to be done on a single system.

I will place the code in modules and run the timings, storing the results to
a table and upload the database to the new dba website where my article will
be posted.

The timing class is just the beginning of course. It is rather the perfect
"introductory" class to demonstrate encapsulation of data and functionality,
instancing etc. I use this class all the time to time execution of queries,
code etc. 

Anyway, if you would like to see some thing timed and included in a database
of "how long it takes to..." get me working code (not TOO complex please)
and I will put it in the demo database with the code executed (timed) and
the timings stored in a table.

Also think about what you could contribute to the web site.

Thanks,

John W. Colby
www.ColbyConsulting.com 

Contribute your unused CPU cycles to a good cause:
http://folding.stanford.edu/

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com


-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com






More information about the AccessD mailing list