From 43c844920c5935c6e91209db8dfdbc6ecf61693b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Matox?= Date: Sun, 10 Oct 2004 19:25:48 +0000 Subject: [PATCH] Add code that profiles lyx2lyx. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9075 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/ChangeLog | 4 +++ lib/Makefile.am | 3 ++- lib/lyx2lyx/.cvsignore | 2 ++ lib/lyx2lyx/ChangeLog | 7 +++++ lib/lyx2lyx/lyx2lyx | 7 +++-- lib/lyx2lyx/profiling.py | 55 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 75 insertions(+), 3 deletions(-) create mode 100755 lib/lyx2lyx/profiling.py diff --git a/lib/ChangeLog b/lib/ChangeLog index a806be014a..83120784de 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2004-10-10 José Matos + + * Makefile.am (dist_lyx2lyx_DATA): fix entry for lyx2lyx/profiling.py + 2004-10-08 José Matos * scripts/legacy_lyxpreview2ppm.py (legacy_conversion): diff --git a/lib/Makefile.am b/lib/Makefile.am index 3f32e5add9..2fd14be7d0 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -846,7 +846,8 @@ dist_lyx2lyx_DATA = \ lyx2lyx/lyx_1_1_6fix3.py \ lyx2lyx/lyx_1_2.py \ lyx2lyx/lyx_1_3.py \ - lyx2lyx/lyx_1_4.py + lyx2lyx/lyx_1_4.py \ + lyx2lyx/profiling.py scriptsdir = $(pkgdatadir)/scripts dist_scripts_SCRIPTS = \ diff --git a/lib/lyx2lyx/.cvsignore b/lib/lyx2lyx/.cvsignore index 0d20b6487c..c57ea56950 100644 --- a/lib/lyx2lyx/.cvsignore +++ b/lib/lyx2lyx/.cvsignore @@ -1 +1,3 @@ *.pyc +*.prof +lyx2lyxc diff --git a/lib/lyx2lyx/ChangeLog b/lib/lyx2lyx/ChangeLog index b82f036979..0ae2539213 100644 --- a/lib/lyx2lyx/ChangeLog +++ b/lib/lyx2lyx/ChangeLog @@ -1,3 +1,10 @@ +2004-10-10 José Matos + + * .cvsignore: add entries related with profiling lyx2lyx. + * lyx2lyx (main): place all program inside this function, to allow + it to be called from profiling. + * profiling.py: new file to profile lyx2lyx. + 2004-10-09 José Matos * LyX.py: add support for format 237, fix variables type, diff --git a/lib/lyx2lyx/lyx2lyx b/lib/lyx2lyx/lyx2lyx index f6ade00c37..f7a7ee6cf7 100755 --- a/lib/lyx2lyx/lyx2lyx +++ b/lib/lyx2lyx/lyx2lyx @@ -73,8 +73,8 @@ def parse_options(argv): return end_format, input, output, error, debug -if __name__ == "__main__": - end_format, input, output, error, debug = parse_options(sys.argv) +def main(argv): + end_format, input, output, error, debug = parse_options(argv) file = LyX.FileInfo(end_format, input, output, error, debug) mode, convertion_chain = file.chain() @@ -85,3 +85,6 @@ if __name__ == "__main__": convert(file) file.write() + +if __name__ == "__main__": + main(sys.argv) diff --git a/lib/lyx2lyx/profiling.py b/lib/lyx2lyx/profiling.py new file mode 100755 index 0000000000..b83ec6fc85 --- /dev/null +++ b/lib/lyx2lyx/profiling.py @@ -0,0 +1,55 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2004 José Matos +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# We need all this because lyx2lyx does not have the .py termination +import imp +lyx2lyx = imp.load_source("lyx2lyx", "lyx2lyx", open("lyx2lyx")) + +# Profiler used in the study +import hotshot, hotshot.stats + +import sys +import os + +""" +This program profiles lyx2lyx. +Usage: + ./profiling.py option_to_lyx2lyx + +Example: + ./profiling.py -ou.lyx ../doc/UserGuide.lyx +""" + +def main(argv): + # This will only work with python >= 2.2, the version where this module was added + prof = hotshot.Profile("lyx2lyx.prof") # Use temporary file, here? + benchtime = prof.runcall( + lambda : lyx2lyx.main(argv)) + prof.close() + + # After the tests, show the profile analysis. + stats = hotshot.stats.load("lyx2lyx.prof") + stats.strip_dirs() + stats.sort_stats('time', 'calls') + stats.print_stats(20) + + os.unlink("lyx2lyx.prof") + + +if __name__ == "__main__": + main(sys.argv)