]> git.lyx.org Git - features.git/commitdiff
Add code that profiles lyx2lyx.
authorJosé Matox <jamatos@lyx.org>
Sun, 10 Oct 2004 19:25:48 +0000 (19:25 +0000)
committerJosé Matox <jamatos@lyx.org>
Sun, 10 Oct 2004 19:25:48 +0000 (19:25 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9075 a592a061-630c-0410-9148-cb99ea01b6c8

lib/ChangeLog
lib/Makefile.am
lib/lyx2lyx/.cvsignore
lib/lyx2lyx/ChangeLog
lib/lyx2lyx/lyx2lyx
lib/lyx2lyx/profiling.py [new file with mode: 0755]

index a806be014a1e76d7a8061295c751bcbf51d2116f..83120784de319c3a3e4f35b2fd1803355467be51 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-10  José Matos  <jamatos@lyx.org>
+
+       * Makefile.am (dist_lyx2lyx_DATA): fix entry for lyx2lyx/profiling.py
+
 2004-10-08  José Matos  <jamatos@lyx.org>
 
        * scripts/legacy_lyxpreview2ppm.py (legacy_conversion):
index 3f32e5add905562fda31ff5238b0910e9a167391..2fd14be7d0ce58766929d8e8abbaa29f144ed911 100644 (file)
@@ -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 = \
index 0d20b6487c61e7d1bde93acf4a14b7a89083a16d..c57ea5695009461ab8a21ea4a024d6687b1c0515 100644 (file)
@@ -1 +1,3 @@
 *.pyc
+*.prof
+lyx2lyxc
index b82f0369792c7490b315cb919489d9a3fb4452fa..0ae2539213eb3d7b23383393746e48bf36ff58b3 100644 (file)
@@ -1,3 +1,10 @@
+2004-10-10  José Matos  <jamatos@lyx.org>
+
+       * .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  <jamatos@lyx.org>
 
        * LyX.py: add support for format 237, fix variables type,
index f6ade00c376794a7c9236c13d37f19b2c69daeaa..f7a7ee6cf797df922b4bf76604316921137235d5 100755 (executable)
@@ -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 (executable)
index 0000000..b83ec6f
--- /dev/null
@@ -0,0 +1,55 @@
+#! /usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2004 José Matos <jamatos@lyx.org>
+#
+# 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)