xref: /trunk/main/slideshow/qa/debug/timings.pl (revision bb113e63)
1cdf0e10cSrcweir:
2cdf0e10cSrcweireval 'exec perl -wS $0 ${1+"$@"}'
3cdf0e10cSrcweir    if 0;
4*bb113e63SAndrew Rist# *************************************************************
5*bb113e63SAndrew Rist#
6*bb113e63SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
7*bb113e63SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
8*bb113e63SAndrew Rist#  distributed with this work for additional information
9*bb113e63SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
10*bb113e63SAndrew Rist#  to you under the Apache License, Version 2.0 (the
11*bb113e63SAndrew Rist#  "License"); you may not use this file except in compliance
12*bb113e63SAndrew Rist#  with the License.  You may obtain a copy of the License at
13*bb113e63SAndrew Rist#
14*bb113e63SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
15*bb113e63SAndrew Rist#
16*bb113e63SAndrew Rist#  Unless required by applicable law or agreed to in writing,
17*bb113e63SAndrew Rist#  software distributed under the License is distributed on an
18*bb113e63SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19*bb113e63SAndrew Rist#  KIND, either express or implied.  See the License for the
20*bb113e63SAndrew Rist#  specific language governing permissions and limitations
21*bb113e63SAndrew Rist#  under the License.
22*bb113e63SAndrew Rist#
23*bb113e63SAndrew Rist# *************************************************************
24cdf0e10cSrcweir# POD Documentation
25cdf0e10cSrcweir
26cdf0e10cSrcweir=head1 PROGRAM NAME AND AUTHOR
27cdf0e10cSrcweir
28cdf0e10cSrcweirTimings - $Revision: 1.2 $
29cdf0e10cSrcweirLast changes: $Author: rt $ $Date: 2004-11-26 18:43:32 $
30cdf0e10cSrcweir
31cdf0e10cSrcweir=head1 WHAT IT IS
32cdf0e10cSrcweir
33cdf0e10cSrcweirExtract move effect timings from a verbose trace log of the
34cdf0e10cSrcweirpresentation engine. Generated is a gnuplot data file, which can be
35cdf0e10cSrcweirdisplayed issuing a 'gnuplot <filename>' or at a gnuplot prompt, via
36cdf0e10cSrcweir'load <filename>'.
37cdf0e10cSrcweir
38cdf0e10cSrcweirTo generate such a verbose log file, rebuild module canvas and module
39cdf0e10cSrcweirslideshow with VERBOSE=t defined in the environment, and debug=t at
40cdf0e10cSrcweirthe build tool command line. Then run the presentation, and redirect
41cdf0e10cSrcweirstdout to your log file.
42cdf0e10cSrcweir
43cdf0e10cSrcweirCall me like this: timings.pl < trace-file > gnuplot-target
44cdf0e10cSrcweir
45cdf0e10cSrcweirThe whole point in doing this is to detect jerks in shape movements,
46cdf0e10cSrcweirwhich manifest themselves clearly in the graphed gnuplot output. Note
47cdf0e10cSrcweirthat there's some heuristic to recognize when one effect ends and
48cdf0e10cSrcweiranother has started: If the time difference between two subsequent
49cdf0e10cSrcweirpage flipping times is more than one second, a new effect is assumed
50cdf0e10cSrcweirand a new gnuplot data record is generated.
51cdf0e10cSrcweir
52cdf0e10cSrcweir=head1 REQUIREMENTS
53cdf0e10cSrcweir
54cdf0e10cSrcweirPerl 5
55cdf0e10cSrcweir
56cdf0e10cSrcweir=cut
57cdf0e10cSrcweir
58cdf0e10cSrcweir##############################################################################
59cdf0e10cSrcweir#
60cdf0e10cSrcweir
61cdf0e10cSrcweirprint "# Autogenerated by timings.pl, do not change\n",
62cdf0e10cSrcweir      "set ylabel \"position\"\n",
63cdf0e10cSrcweir	  "set xlabel \"time\"\n",
64cdf0e10cSrcweir      "plot '-' index 0 using (\$1):(\$2) title \"Move effect position\" with lp\n",
65cdf0e10cSrcweir	  "#0\n";
66cdf0e10cSrcweir
67cdf0e10cSrcweir$state = 0;
68cdf0e10cSrcweir$last_time = 0;
69cdf0e10cSrcweir$record = 1;
70cdf0e10cSrcweir
71cdf0e10cSrcweirwhile( <> )
72cdf0e10cSrcweir{
73cdf0e10cSrcweir	if( $state == 0 && m|next position will be| )
74cdf0e10cSrcweir	{
75cdf0e10cSrcweir		($posX) = m|.*\(([0-9]+.[0-9]+),|;
76cdf0e10cSrcweir		($posY) = m|.*,([0-9]+.[0-9]+)\)|;
77cdf0e10cSrcweir		$state = 1;
78cdf0e10cSrcweir	}
79cdf0e10cSrcweir	elsif( $state == 1 && m|output pos is| )
80cdf0e10cSrcweir	{
81cdf0e10cSrcweir		$state = 2;
82cdf0e10cSrcweir	}
83cdf0e10cSrcweir	elsif( $state == 2 && m|flip done at| )
84cdf0e10cSrcweir	{
85cdf0e10cSrcweir		$state = 0;
86cdf0e10cSrcweir		($flippingTime) = m|.*at ([0-9]+.[0-9]+)|;
87cdf0e10cSrcweir
88cdf0e10cSrcweir		if( $last_time != 0 )
89cdf0e10cSrcweir		{
90cdf0e10cSrcweir			if( $last_time + 1.0 < $flippingTime )
91cdf0e10cSrcweir			{
92cdf0e10cSrcweir				# new record
93cdf0e10cSrcweir				print "\n\n#", $record, "\n";
94cdf0e10cSrcweir				$record++;
95cdf0e10cSrcweir			}
96cdf0e10cSrcweir		}
97cdf0e10cSrcweir
98cdf0e10cSrcweir		$last_time = $flippingTime;
99cdf0e10cSrcweir		print $flippingTime, " ", $posX, " ", $posY, "\n";
100cdf0e10cSrcweir	}
101cdf0e10cSrcweir}
102