builtup4/main.py
2021-09-08 13:49:09 +03:00

94 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.isynced import isynced as synced
from bu4.linkable.toolchain.readfile import readfile
from bu4.tracing.probe import Probe
from bu4.tracing.trace import trace
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()