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))
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
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
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
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
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
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))
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
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
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)))
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)))