Example #1
0
def benchmark():
    "Run few simple benchmarks for extend_hom()."
    logging.getLogger().setLevel(logging.DEBUG)

    from sage.graphs.graph_generators import graphs
    from sage.misc.sage_timeit import sage_timeit

    K6 = graphs.CompleteGraph(6)
    K2 = graphs.CompleteGraph(2)
    K7_6 = graphs.CompleteBipartiteGraph(7, 6)
    C16 = graphs.CycleGraph(16)
    C13 = graphs.CycleGraph(13)
    C5 = graphs.CycleGraph(5)
    eh = extend_hom

    logging.info(
        "All homs K6 -> K6: %s",
        sage_timeit("assert len(eh(K6, K6, limit=10000)) == 720",
                    locals(),
                    preparse=False))

    logging.info(
        "All homs K7,6 -> K2: %s",
        sage_timeit("assert len(eh(K7_6, K2, limit=10000)) == 2",
                    locals(),
                    preparse=False))

    logging.info(
        "All homs C13 -> C5: %s",
        sage_timeit("assert len(eh(C13, C5, limit=10000)) == 7150",
                    locals(),
                    preparse=False))
Example #2
0
def test(p, l, h, T, implementation=None, number=0, repeat=3):
    """
    This subroutine does the real job
    """
    tower = T(GF(p), l, 'x', implementation=implementation)

    tcreat, tlift, tpush = [], [], []
    for i in range(1, h + 1):
        context = globals()
        context.update(locals())
        tcreat.append(
            sage_timeit('tower[i]', context, number=1, repeat=1, seconds=True))

        if i > 1:
            tpush.append(
                sage_timeit('tower._push(tower[i].random_element())',
                            context,
                            number=number,
                            repeat=repeat,
                            seconds=True))
            tlift.append(
                sage_timeit(
                    'tower._lift([tower[i-1].random_element() for k in range(l)])',
                    context,
                    number=number,
                    repeat=repeat,
                    seconds=True))

    print 'Creation time:', sum(tcreat)
    print 'Push time:', sum(tpush)
    print 'Lift time:', sum(tlift)

    return tcreat, tpush, tlift
Example #3
0
def test_python(p, i1, i2, number=0, repeat=3):
    import compositum as c
    K = GF(p)
    P = K.extension(i1, 'x')
    R, phi, phinv = c.ffext(P, i2)
    
    a = P.random_element()
    c = R.random_element()
    d = R.random_element()
    context = globals()
    context.update(locals())
    tembed = sage_timeit('phi(a)', context, number=number, repeat=repeat, seconds=True)
    tproject = sage_timeit('phinv(c)', context, number=number, repeat=repeat, seconds=True)
    tmul = sage_timeit('c*d', context, number=number, repeat=repeat, seconds=True)

    return tembed, tproject, tmul
Example #4
0
 def run_one_example(self, test, example, filename, compileflags):
     if self._collect_timeit_stats:
         with self._random_seed:
             from sage.misc.sage_timeit import sage_timeit
             key = (example.source, example)
             try:
                 self._timeit_stats[key] = sage_timeit(
                     example.source, test.globs)
             except Exception, e:
                 self._timeit_stats[key] = e
Example #5
0
    def run_one_example(self, test, example, filename, compileflags):
        if self._collect_timeit_stats:
            with self._random_seed:
                from sage.misc.sage_timeit import sage_timeit

                key = (example.source, example)
                try:
                    self._timeit_stats[key] = sage_timeit(example.source, test.globs)
                except Exception, e:
                    self._timeit_stats[key] = e
Example #6
0
def test(p, l, h, T, implementation=None, number=0, repeat=3):
    """
    This subroutine does the real job
    """
    tower = T(GF(p), l, 'x', implementation=implementation)
    
    tcreat, tlift, tpush = [], [], []
    for i in range(1, h+1):
        context = globals()
        context.update(locals())
        tcreat.append(sage_timeit('tower[i]', context, number=1, repeat=1, seconds=True))

        if i > 1:
            tpush.append(sage_timeit('tower._push(tower[i].random_element())', 
                                     context, number=number, repeat=repeat, seconds=True))
            tlift.append(sage_timeit('tower._lift([tower[i-1].random_element() for k in range(l)])',
                                     context, number=number, repeat=repeat, seconds=True))

    print 'Creation time:', sum(tcreat)
    print 'Push time:', sum(tpush)
    print 'Lift time:', sum(tlift)

    return tcreat, tpush, tlift
Example #7
0
def benchmark():
  "Run few simple benchmarks for extend_hom()."
  logging.getLogger().setLevel(logging.DEBUG)

  from sage.graphs.graph_generators import graphs
  from sage.misc.sage_timeit import sage_timeit

  K6 = graphs.CompleteGraph(6)
  K2 = graphs.CompleteGraph(2)
  K7_6 = graphs.CompleteBipartiteGraph(7, 6)
  C16 = graphs.CycleGraph(16)
  C13 = graphs.CycleGraph(13)
  C5 = graphs.CycleGraph(5)
  eh = extend_hom

  logging.info("All homs K6 -> K6: %s", sage_timeit(
    "assert len(eh(K6, K6, limit=10000)) == 720", locals(), preparse=False))

  logging.info("All homs K7,6 -> K2: %s", sage_timeit(
    "assert len(eh(K7_6, K2, limit=10000)) == 2", locals(), preparse=False))

  logging.info("All homs C13 -> C5: %s", sage_timeit(
    "assert len(eh(C13, C5, limit=10000)) == 7150", locals(), preparse=False))
Example #8
0
 def _timeit(self, code):
     """
     Time evaluation of the given code, timing out after
     self._url_timeout seconds, and using the default number and
     repeat values as options to timeit.
     """
     try:
         alarm(self._url_timeout)
         T = sage_timeit(code, globals(), number=self._timeit_number,
                            repeat=self._timeit_repeat)
     except KeyboardInterrupt:
         return TIMEOUT
     finally:
         cancel_alarm()
     return T
Example #9
0
 def _timeit(self, code):
     """
     Time evaluation of the given code, timing out after
     self._url_timeout seconds, and using the default number and
     repeat values as options to timeit.
     """
     try:
         alarm(self._url_timeout)
         T = sage_timeit(code, globals(), number=self._timeit_number,
                            repeat=self._timeit_repeat)
     except KeyboardInterrupt:
         return TIMEOUT
     finally:
         cancel_alarm()
     return T
Example #10
0
def test_irred(p, i1, i2, number=0, repeat=3):
    K = GF(p)
    P = FFDesc(p, irred(K, i1).list())
    Q = FFDesc(p, irred(K, i2).list())
    R = P.compositum(Q)
    
    context = globals()
    context.update(locals())
    # must be done only once to avoid (dis)counting caching
    tcomp = sage_timeit('P.compositum(Q)', context, number=1, repeat=1, seconds=True)

    a = FFElt(P, [randrange(p) for i in range(i1)])
    b = FFElt(Q, [randrange(p) for i in range(i2)])
    c = FFElt(R, [randrange(p) for i in range(i1*i2)])
    context = globals()
    context.update(locals())
    tembed_pre = sage_timeit('a.embed(b,R)', context, number=1, repeat=1, seconds=True)
    tembed = sage_timeit('a.embed(b,R)', context, number=number, repeat=repeat, seconds=True)
    
    # Burn R's precomputed polynomials
    ab = a.embed(b,R)
    ab.project(P,b)
    
    ab = a.embed(b, R)
    d = a.embed(b, R)
    context = globals()
    context.update(locals())
    tproject_pre = sage_timeit('ab.project(P,b)', context, number=1, repeat=1, seconds=True)
    tproject = sage_timeit('ab.project(P,b)', context, number=number, repeat=repeat, seconds=True)
    tmono2dual = (sage_timeit('c.embed(P, P)', context, number=1, repeat=1, seconds=True) -
                  sage_timeit('c.embed(P, P)', context, number=1, repeat=1, seconds=True))
    tmul = sage_timeit('c*c', context, number=number, repeat=repeat, seconds=True)
    ttmul = sage_timeit('c*d', context, number=number, repeat=repeat, seconds=True)
    tiso = sage_timeit('c.eltseq_dual_python(P,Q)', context, number=number, repeat=repeat, seconds=True)
    tbsgs = sage_timeit('c.eltseq_dual_BSGS(P,Q)', context, number=number, repeat=repeat, seconds=True)
    tmatrix = sage_timeit('c.eltseq_dual_matrix(P,Q)', context, number=number, repeat=repeat, seconds=True)

    return tcomp, tembed_pre, tembed, tproject_pre, tproject, tmono2dual, tmul, ttmul, tiso, tbsgs, tmatrix
Example #11
0
import os
if 'SAGE_CLEAN' not in os.environ:
    import sage.misc.misc
    from sage.misc.interpreter import preparser, _ip
    preparser(True)

    import sage.all_cmdline
    sage.all_cmdline._init_cmdline(globals())

    _ip.ex('from sage.all import Integer, RealNumber')
    os.chdir(os.environ["CUR"])
    import sage.misc.interpreter

    from sage.misc.interpreter import attached_files

    if not os.environ.has_key('SAGE_IMPORTALL') or os.environ['SAGE_IMPORTALL'] != "no":
        _ip.ex('from sage.all_cmdline import *')


    startup_file = os.environ.get('SAGE_STARTUP_FILE', '')
    if os.path.exists(startup_file):
        _ip.options.autoexec.append('load %s'%startup_file)

    from sage.misc.sage_timeit import sage_timeit
    _ip.expose_magic('timeit', lambda self, s: sage_timeit(s, _ip.user_ns))

    from sage.misc.preparser import preparse
    old_prun = _ip.IP.magic_prun
    _ip.expose_magic('prun', lambda self, s: old_prun(preparse(s)))
Example #12
0
import os
if 'SAGE_CLEAN' not in os.environ:
    import sage.misc.misc
    from sage.misc.interpreter import preparser, _ip
    preparser(True)

    import sage.all_cmdline
    sage.all_cmdline._init_cmdline(globals())

    _ip.ex('from sage.all import Integer, RealNumber')
    os.chdir(os.environ["CUR"])
    import sage.misc.interpreter

    from sage.misc.interpreter import attached_files

    if not os.environ.has_key(
            'SAGE_IMPORTALL') or os.environ['SAGE_IMPORTALL'] != "no":
        _ip.ex('from sage.all_cmdline import *')

    startup_file = os.environ.get('SAGE_STARTUP_FILE', '')
    if os.path.exists(startup_file):
        _ip.options.autoexec.append('load %s' % startup_file)

    from sage.misc.sage_timeit import sage_timeit
    _ip.expose_magic('timeit', lambda self, s: sage_timeit(s, _ip.user_ns))

    from sage.misc.preparser import preparse
    old_prun = _ip.IP.magic_prun
    _ip.expose_magic('prun', lambda self, s: old_prun(preparse(s)))