Program (25 threads)

missing image
level 0, time scaled to show program state events
missing image
level 1, show nested thread events
missing image
level 3, with the x/y scale increased so a single thread fills the window

This timeline shows the events generated by the trace of (an imaginary) computer program. The running time of this program is about 28 seconds. It has twenty-five execution threads that periodically synchronize with each other.

Running this example requires no knowledge of programming. One can treat the events abstractly and imagine how they might refer, at longer time scales, to a small group, say a classroom with twenty-five pupils completing various tasks at different rates.

This is a relative timeline which means that all its events are defined with durations rather than absolute dates and times. All the durations are relative to a single time called the origin of the timeline.

Usually, the user gives a date and time for the origin when the relative timeline is loaded. All the events in the timeline are given absolute dates and times by adding events' durations to the origin.

For example, take an event that starts at "-1 week" and ends at "2 weeks". When loaded with the origin at "7 March 2009", the event is located starting at "1 March 2009" and ending at "21 March 2009".

Relative timelines are useful for sequences of events that don't have absolute dates and times. One example is a list of songs to be played in a certain order at various times.

  • Relative timelines
  • Events of short duration
  • Nested categories
  • Timeline with many events (more than 12,000)
  • Automatic hiding based on time scale
  • Manual hiding of events
  • Automatic hiding based on distance from center axis
things to try:
  • Before loading the timeline, reset the display time to the clock time with using the set time to current time command missing image or the reset command missing image. This will allow the timeline to load slightly after the display time.
  • Hit the OK button in the dialog box to load the timeline at the current clock time. The timeline will be initially displayed as a single blue event.
  • Select the event by pointing and clicking with the mouse. Hit the "move time to start of selection" missing image command on the toolbar. This moves the display time to start of the program.
  • Increase the time scale (move the triangle target up) until the time ruler changes to seconds. (The time scale will be about 1,100,000.) Increasing the time scale changes the single event into a series of events representing the program's state. The change from a single event to many events is a kind of data hiding linked to the time scale. This is similar to the hiding supported by manually changing the level of detail. In this case, the level of detail for the program category is automatically changed by increasing the time scale.
  • Increasing the time scale stretches out the size of event objects. It also stretches the distance between events and the the viewpoint. You may need to move the display time forward so that it falls inside the Program25Threads event.
  • Continue increasing the time scale until the ruler scale is 1/100 second. (The time scale will be about 100,000,000.) Note that the display time is now printed with a decimal number representing fractions of a second.
  • Each thread in the program is a category nested inside the program category. Change the level of detail to one. The events representing the running state of each thread are shown.
  • Change the level of detail to two. This shows some additional events in each thread.
  • Change the level of detail to three. This adds events to a category nested inside each thread. This new category represents some class of activity by the thread.
  • Change the level of detail to four. This adds events to another category nested inside each thread.
  • Try moving the display time forward and backward to see how fast the qviewer can display movement across a modest (about 12,000) number of events.
  • Increase the x/y scale (move the diamond target up) until the thread at the center of the program occupies almost the entire display area (the x/y scale will be about 6.5.) Notice that as the scale increases, the other threads gradually fade as they move away from the center of the window.
  • Move around inside the program category (using the square target) and notice how thread events become more or less transparent as they move in relation to the center of the window.
  • Move near the center of the program category and change to the right view direction missing image.
  • Move the x/y movement control (the square control) left and right. Notice how the same fading that takes place in the past and future view directions becomes fading with distance away from the viewpoint.
© 2011 Quotidian Incorporated