Source code for profiling.gedaif.gsymlib

#!/usr/bin/env python
# encoding: utf-8

# Copyright (C) 2015 Chintalagiri Shashank
#
# This file is part of tendril.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""
gedaif.gsymlib Profiling
------------------------

This file runs profiling on :mod:`tendril.gedaif.gsymlib`.
"""

import os
import inspect

from ..profiler import do_profile

from tendril.gedaif import gsymlib

SCRIPT_PATH = os.path.abspath(inspect.getfile(inspect.currentframe()))
SCRIPT_FOLDER = os.path.normpath(os.path.join(SCRIPT_PATH, os.pardir))


@do_profile(os.path.join(SCRIPT_FOLDER, 'gsymlib'), 'gsymlib')
[docs]def generate_gsymlib(): """ Profiles gsymlib generation. When the ``gsymlib`` module is loaded, it automatically generates the gEDA symbol library from the library on the filesystem. This function profiles the generation of the symlib. :download:`Raw execution profile <../../../profiling/gedaif/gsymlib/gsymlib.profile>` :download:`SVG of execution profile <../../../profiling/gedaif/gsymlib/gsymlib.profile.svg>` .. rubric:: Execution Profile .. image:: ../../../profiling/gedaif/gsymlib/gsymlib.profile.svg .. rubric:: pstats Output .. literalinclude:: ../../../profiling/gedaif/gsymlib/gsymlib.profile.stats """ symlib = gsymlib.gen_symlib()
@do_profile(os.path.join(SCRIPT_FOLDER, 'gsymlib'), 'gsymlib_idx')
[docs]def generate_gsymlib_index(): """ Profiles gsymlib index generation. When the ``gsymlib`` module is loaded, it automatically generates the gEDA symbol library from the library on the filesystem. This function profiles the generation of the index dictionary. :download:`Raw execution profile <../../../profiling/gedaif/gsymlib/gsymlib_idx.profile>` :download:`SVG of execution profile <../../../profiling/gedaif/gsymlib/gsymlib_idx.profile.svg>` .. rubric:: Execution Profile .. image:: ../../../profiling/gedaif/gsymlib/gsymlib_idx.profile.svg .. rubric:: pstats Output .. literalinclude:: ../../../profiling/gedaif/gsymlib/gsymlib_idx.profile.stats """ symlib_idx = gsymlib.gen_index(gsymlib.gsymlib)
[docs]def main(): """ The main function for this profiler module. """ # TODO # Maybe set this up to invalidate caches first, # and run profiling with and without caches. # TODO # Record total runtime and such, perhaps? profilers = [generate_gsymlib, generate_gsymlib_index] for profiler in profilers: profiler()
if __name__ == '__main__': main()