33target TypeScript {
44 fast: true
55};
6+
7+ import BenchmarkRunner from "../BenchmarkRunner.lf";
8+
69reactor Ping(limit:number(100000)) {
710 input receive:number;
11+ input start;
812 output send:number;
913 state pingsLeft:number(limit);
10- state startTime:time;
1114 logical action serve;
12- logical action done;
13- reaction (startup ) -> send {=
15+ output done: boolean ;
16+ reaction (start ) -> send {=
1417 send = pingsLeft;
1518 pingsLeft -= 1;
16- startTime = util.getCurrentPhysicalTime();
1719 =}
1820 reaction (serve) -> send {=
1921 send = pingsLeft;
@@ -23,25 +25,25 @@ reactor Ping(limit:number(100000)) {
2325 if (pingsLeft > 0) {
2426 actions.serve.schedule(0, null);
2527 } else {
26- actions.done.schedule(0, null);
28+ pingsLeft = limit;
29+ done = true;
2730 }
2831 =}
29- reaction (done) {=
30- let elapsedTime = util.getCurrentPhysicalTime().subtract(startTime as TimeValue);
31- console.log("Elapsed time: " + elapsedTime);
32- util.requestStop();
33- =}
3432}
3533reactor Pong {
3634 input receive:number;
3735 output send:number;
3836 reaction (receive) -> send {=
39- send = receive as number;
37+ send = receive as number;
4038 =}
4139}
42- main reactor PingPong(limit:number(100000)) {
40+ main reactor PingPong(numIterations:number(12), limit:number(100000)) {
41+ runner = new BenchmarkRunner(numIterations = numIterations);
4342 ping = new Ping(limit = limit);
4443 pong = new Pong();
44+
45+ runner.start -> ping.start;
4546 ping.send -> pong.receive;
46- pong.send -> ping.receive;
47+ pong.send -> ping.receive;
48+ ping.done -> runner.finish;
4749}
0 commit comments