97 lines
2.9 KiB
Perl
97 lines
2.9 KiB
Perl
:
|
|
eval 'exec perl -wS $0 ${1+"$@"}'
|
|
if 0;
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
# This file incorporates work covered by the following license notice:
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed
|
|
# with this work for additional information regarding copyright
|
|
# ownership. The ASF licenses this file to you under the Apache
|
|
# License, Version 2.0 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
#
|
|
# POD Documentation
|
|
|
|
=head1 PROGRAM NAME AND AUTHOR
|
|
|
|
Timings
|
|
|
|
=head1 WHAT IT IS
|
|
|
|
Extract move effect timings from a verbose trace log of the
|
|
presentation engine. Generated is a gnuplot data file, which can be
|
|
displayed issuing a 'gnuplot <filename>' or at a gnuplot prompt, via
|
|
'load <filename>'.
|
|
|
|
To generate such a verbose log file, rebuild module canvas and module
|
|
slideshow with VERBOSE=t defined in the environment, and debug=t at
|
|
the build tool command line. Then run the presentation, and redirect
|
|
stdout to your log file.
|
|
|
|
Call me like this: timings.pl < trace-file > gnuplot-target
|
|
|
|
The whole point in doing this is to detect jerks in shape movements,
|
|
which manifest themselves clearly in the graphed gnuplot output. Note
|
|
that there's some heuristic to recognize when one effect ends and
|
|
another has started: If the time difference between two subsequent
|
|
page flipping times is more than one second, a new effect is assumed
|
|
and a new gnuplot data record is generated.
|
|
|
|
=head1 REQUIREMENTS
|
|
|
|
Perl 5
|
|
|
|
=cut
|
|
|
|
##############################################################################
|
|
#
|
|
|
|
print "# Autogenerated by timings.pl, do not change\n",
|
|
"set ylabel \"position\"\n",
|
|
"set xlabel \"time\"\n",
|
|
"plot '-' index 0 using (\$1):(\$2) title \"Move effect position\" with lp\n",
|
|
"#0\n";
|
|
|
|
$state = 0;
|
|
$last_time = 0;
|
|
$record = 1;
|
|
|
|
while( <> )
|
|
{
|
|
if( $state == 0 && m|next position will be| )
|
|
{
|
|
($posX) = m|.*\(([0-9]+.[0-9]+),|;
|
|
($posY) = m|.*,([0-9]+.[0-9]+)\)|;
|
|
$state = 1;
|
|
}
|
|
elsif( $state == 1 && m|output pos is| )
|
|
{
|
|
$state = 2;
|
|
}
|
|
elsif( $state == 2 && m|flip done at| )
|
|
{
|
|
$state = 0;
|
|
($flippingTime) = m|.*at ([0-9]+.[0-9]+)|;
|
|
|
|
if( $last_time != 0 )
|
|
{
|
|
if( $last_time + 1.0 < $flippingTime )
|
|
{
|
|
# new record
|
|
print "\n\n#", $record, "\n";
|
|
$record++;
|
|
}
|
|
}
|
|
|
|
$last_time = $flippingTime;
|
|
print $flippingTime, " ", $posX, " ", $posY, "\n";
|
|
}
|
|
}
|