home *** CD-ROM | disk | FTP | other *** search
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 79
-
-
- TURBO-LESSON 17: A TIMING FUNCTION
-
- OBJECTIVES - In this lesson, you will learn about:
-
- 1. Include files
- 2. A timing function
- 3. Improving timing accuracy
- 4. Sources of errors in timing
-
-
- 1. Include files.
-
- After you have debugged and tested a subprogram, you no longer
- need to see the source statements anymore. It would be great if
- you could just use the subprogram like one of the predefined
- functions or procedures.
-
- You can, almost!
-
- Here's how:
-
- (1) Store the subprogram in a file. You may want to use a
- filename extension such as .INC to mark your "Include" files.
-
- (2) In the program where you will use the subprogram, use the
- special comment statement to include the file. It's form is:
-
- {$I ABC.INC }
-
- How it works:
-
- As the program is compiling, the contents of the file, ABC.INC
- will be compiled at the point where {$I ABC.INC } occurs in the
- program.
-
- ##### DO:
-
- Look at PROG17. Notice the statement
-
- {$I Time.Inc Get System time in seconds }
-
- This statement instructs the compiler to compile whatever it
- finds in a file named Time.Inc.
-
- The actual function, Time, is not in PROG17. All that appears in
- PROG17 is the include statement. Include files provide a way to
- keep your programs uncluttered.
- î
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 80
-
-
- ##### DO:
-
- Inspect Time.Inc.
-
- For now, just note that the contents of this file are program
- statements that can be compiled.
-
- ##### DO:
-
- Compile PROG17. Watch the bottom left of the screen.
-
- How do you know when the include file is being compiled?
-
- Did you see the "I"? If not, compile the program again.
-
-
- 2. A timing function.
-
- The include file, Time.Inc, contains a function called Time which
- provides the time from the system clock.
-
- Since this is an include file, you don't have to know how it
- works, just what it does. It can be viewed like a predefined
- function.
-
- The function provides the system clock time converted to seconds.
- This makes it easy to compare two times by subtracting the
- earlier time from the later.
-
- ##### DO:
-
- Examine PROG17 again.
-
- PROG17 gets Start_Time from the function, Time.
-
- A FOR loop is used to repeat something you want to time.
-
- After the FOR loop is done, Stop_Time is obtained from Time.
-
- The results printed give both total elapsed time and the time for
- a single repetition.
-
- ##### DO:
-
- Run PROG17 using 1000 as the number of repetitions.
-
- The function, Time, is itself being timed in PROG17.
- î
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 81
-
-
- ##### DO:
-
- Run the program with the 10 as the number of repetitions. Input
- 10 several times and compare the output.
-
- ##### DO:
-
- Run the program inputting 1 several times.
-
- Do you think the time function is accurate?
-
-
- 3. Improving Timing Accuracy.
-
- One way to improve the timing accuracy, in this case, is to
- average the time over many repetitions.
-
- ##### DO:
-
- Run the program to complete the table below.
-
- Number of Time for
- Repetitions One Repetition
- 10
- 50
- 100
- 500
- 1000
- 2000
- 5000
-
- What conclusions can you make from the results you observed?
-
- What is the minimum number of repetitions needed for reasonably
- accurate results?
-
- ##### DO:
-
- Run the program, inputting the "minimum" you chose above several
- times. Are the results accurate?
-
- Try it again with a minimum about half as large. Are the results
- less accurate?
- î
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 82
-
-
- 4. Sources of errors in timing.
-
- Time to look at another problem!
-
- What is actually being timed in PROG17?
-
- The statement (A:=Time;)?
-
- The timing section of PROG17 follows:
-
- Start_Time := Time;
- FOR I := 1 to K DO
- A := Time;
- Stop_Time := Time;
-
- What period of time is actually included in Elapsed_Time?
-
- The period measured starts at the end of the execution of the
- statement: Start_Time := Time;
-
- and ends at the end of the execution of the statement:
- Stop_Time := Time;
-
- This includes the time needed to execute
-
- FOR I := 1 to K DO
- and Stop_Time := Time;
-
- in addition to the time for the action we want to measure:
-
- A := Time;
-
- Is this a serious problem?
-
- ##### DO:
-
- Run the program for 1000 repetitions.
-
- Record the total elapsed time and the time for one repetition for
- later comparison.
- î
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 83
-
-
- ##### DO:
-
- Change the FOR statement to:
-
- FOR I := 1 to K DO; {Do nothing. Semicolon ends the FOR loop.}
-
- Delete or comment out the statement, (A := Time;).
-
- Run the program for 1000 repetitions.
-
- Record the total elapsed time and the time for one repetition.
-
- These are times with the (A := Time;) statement removed.
-
- How do these times compare to the times recorded in the previous
- exercise?
-
- Are these times at least 10 times as small as the times in the
- previous exercise?
-
- Do you think you are getting a reasonable measure of the Time
- function?
-
- ##### DO:
-
- Change the FOR statement back to its original form:
-
- FOR I := 1 to K DO
-
- After the FOR statement, add the statement:
-
- J := 2;
-
- Run the program for 1000 repetitions.
-
- Record the results. How do they compare with the times for the
- FOR loop?
-
- Do you know how much time is needed to execute (J := 2;)?
-
- ##### DO:
-
- Try to formulate a rule to help you decide whether you are
- getting reasonable results in a particular case using the Time
- function.
- î