builtup4/main.py

93 lines
3.5 KiB
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
import random
from collections import deque
from bu4.common_interface import with_common_interface
from bu4.evaluation.constructs.proxy import antiproxy, eproxy
from bu4.evaluation.sync import sync
from bu4.parsing.toolchain.readfile import readfile
from bu4.synced import synced
from bu4.tracing.probe import trace, Probe
from timesample import TimeSample
with TimeSample('all'):
with TimeSample('sys0'):
with TimeSample('compilation'):
sys0 = synced(readfile('src/sys0'))
with TimeSample('first, AP'):
TimeSample.print(
antiproxy(sys0)(0)(1)(
lambda a: lambda b: a + b
)(
lambda n: lambda x: lambda y: x if n == 0 else y
)(
lambda n: lambda x: lambda y: x if n & 1 else y
)(
lambda n: n >> 1
)
)
with TimeSample('second, AP'):
TimeSample.print(
antiproxy(sys0)(0)(1)(
lambda a: lambda b: a + b
)(
lambda n: lambda x: lambda y: x if n == 0 else y
)(
lambda n: lambda x: lambda y: x if n & 1 else y
)(
lambda n: n >> 1
)
)
with TimeSample('third, EP'):
sys0 = with_common_interface(sys0)
TimeSample.print(sys0)
with TimeSample('sys2'):
with TimeSample('compilation'):
sys2c = synced(readfile('src/sys2'))
with TimeSample('runtime'):
sys2 = sys2c
sys2 = with_common_interface(sys2)
TimeSample.print(sys2)
with TimeSample('runtime'):
sys2 = sys2c
sys2 = with_common_interface(sys2)
TimeSample.print(sys2)
with TimeSample('sys3'):
sys3 = with_common_interface(synced(readfile('src/sys3')))
sys3 = sync(sys3.call(eproxy(5)))
TimeSample.print(sys3)
with TimeSample('sys1'):
sys1 = with_common_interface(synced(readfile('src/sys1')))
random.seed(42)
sys1 = sync(sys1.call(eproxy(random.randrange(2 ** 10))))
sys1 = sync(sys1.call(eproxy(random.randrange(2 ** 10))))
sys1 = sync(sys1.call(eproxy(random.randrange(2 ** 10))))
TimeSample.print(sys1)
with TimeSample('sys4'):
TimeSample.print(with_common_interface(synced(readfile('src/sys4'))))
with TimeSample('sys5'):
sys5 = synced(readfile('src/sys5'))
queue = deque([(0, 0, sys5)])
for trace_index in range(1, 100 + 1):
if not queue:
break
tab, parent, evaluable = queue.popleft()
for _ in range(10000):
evaluable = evaluable.next()
_probe_index, probe = trace(evaluable)
prefix = ('.', ' ' * tab, parent, trace_index)
if isinstance(probe, Probe):
start, list_ = probe.start_and_list()
TimeSample.print(*prefix, _probe_index, probe)
queue.extend((tab + 1, trace_index, deeper_evaluable) for deeper_evaluable in list_)
else:
TimeSample.print(*prefix, '...')
with TimeSample('sys6'):
sys6 = synced(readfile('src/sys6')).call(synced('?'))
for _ in range(100):
sys6 = sys6.next()
print(sys6)
for _ in range(10000000):
sys6 = sys6.next()