# Copyright (c) PARRRATE T&V 2021. All rights reserved. import random import shutil from pathlib import Path 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.deep_trace import deep_trace from timesample import TimeSample shutil.rmtree(Path('compiled'), ignore_errors=True) with TimeSample('all'): with TimeSample('sys0'): with TimeSample('compilation'): sys0 = synced(readfile('std/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('std/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('std/sys3'))) sys3 = sync(sys3.call(eproxy(5))) TimeSample.print(sys3) with TimeSample('sys1'): sys1 = with_common_interface(synced(readfile('std/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('std/sys4')))) with TimeSample('sys5'): sys5 = synced(readfile('std/sys5')) print(deep_trace(sys5)) with TimeSample('sys6'): with TimeSample('compilation'): sys6 = synced(readfile('std/sys6')).call(synced('?')) with TimeSample('runtime'): for _ in range(100): sys6 = sys6.next() # print(sys6) for _ in range(10000000): sys6 = sys6.next()