Click here to Skip to main content
Click here to Skip to main content

Tagged as

Go to top

Precise duration measurement

, 27 Dec 1999
Rate this:
Please Sign up or sign in to vote.
A simple class that provides high precision timing.
  • Download demo project - 5 Kb
  • Download source files - 1 Kb
  • <!-- Article Starts -->

    Here is a simple class used to measure the duration of functions or code parts (from some microseconds to milliseconds) using the Windows high precision timer.

    This class is very easy to use. The following code measure the duration of the Foo function:

        CDuration timer;
    
        timer.Start();
        Foo();
        timer.Stop();
    
        cout << "Foo duration: " << timer.GetDuration()/1000.0 << " milliseconds" << endl;
    

    The GetDuration() method returns the number of microseconds between calls to Start() and Stop(). This value depends on the precision of the internal timer. In a multitasking operating system like Windows, it is difficult to make very accurate duration measurement. Thus, measurement less than a few milliseconds will be correct, but longer measurement could have a difference of a tenth of a millisecond or more because of tasks switching.

    The constructor implements a calibration procedure so the following code will return 0 milliseconds:

        CDuration dur;
    
        dur.Start();
        dur.Stop();
    
        cout << "Zero duration: " << dur.GetDuration()/1000.0 << " milliseconds" << endl;
    

    If you really need no task switching during a long time, you could increment the process and thread priority in the Start() method and decrement it in Stop() .

    License

    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here

    Share

    About the Author

    Laurent Guinnard

    Switzerland Switzerland
    No Biography provided

    Comments and Discussions

     
    Questionlicense PinmemberJohnWallis4210-Jun-09 17:40 
    AnswerRe: license PinmemberLaurent.Guinnard1-Nov-09 7:01 
    Questionhow come it wont compile? Pinmemberchefmannyd16-May-09 8:05 
    AnswerRe: how come it wont compile? PinmemberDave Cross20-Jul-09 0:49 
    QuestionCan I write my own profilling code Pinmemberaamerqureshi12-Mar-07 1:02 
    GeneralTerrific.. but could use a few small functions Pinmemberhannahb3-Aug-06 6:14 
    Questionseconds or milliseconds ? PinmemberStlan25-Apr-05 3:55 
    AnswerRe: seconds or milliseconds ? PinmemberStlan25-Apr-05 3:56 
    GeneralExcellent PinmemberSimon Hughes2-Jun-04 1:56 
    GeneralThe best! PinmemberDlt7520-May-04 20:21 
    GeneralAccurate timing PinmemberBernhard Hofmann9-Sep-03 21:59 
    GeneralCalling Start() Causes a Thread Switch PinmemberMikeAThon20-Feb-03 15:08 
    GeneralRe: Calling Start() Causes a Thread Switch Pinmemberpeterchen25-Apr-05 6:08 
    GeneralRe: Calling Start() Causes a Thread Switch PinmemberToby Opferman15-Aug-06 16:39 
    General5/5 PinmemberRalph Wetzel8-Jan-03 10:42 
    GeneralExcellent! PinmemberNitron12-Nov-02 8:16 
    GeneralSimple and concise I like it. PinmemberAnonymous4-Mar-02 9:46 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Mobile
    Web04 | 2.8.140926.1 | Last Updated 28 Dec 1999
    Article Copyright 1999 by Laurent Guinnard
    Everything else Copyright © CodeProject, 1999-2014
    Terms of Service
    Layout: fixed | fluid