molBench function

Future<void> molBench(
  1. ReactiveFramework framework
)

Implementation

Future<void> molBench(ReactiveFramework framework) async {
  final res = <int>[];
  final iter = framework.withBuild(() {
    final a = framework.signal(0);
    final b = framework.signal(0);
    final c = framework.computed(() => (a.read() % 2) + (b.read() % 2));
    final d = framework.computed(() => numbers
        .map((i) => {'x': i + (a.read() % 2) - (b.read() % 2)})
        .toList());
    final e = framework
        .computed(() => hard(c.read() + a.read() + d.read()[0]['x']!, 'E'));
    final f = framework.computed(() => hard(d.read()[2]['x'] ?? b.read(), 'F'));
    final g = framework.computed(() =>
        c.read() + (c.read() + e.read() % 2) + d.read()[4]['x']! + f.read());

    framework.effect(() => res.add(hard(g.read(), 'H')));
    framework.effect(() => res.add(g.read()));
    framework.effect(() => res.add(hard(f.read(), 'J')));

    return (int i) {
      res.clear();
      framework.withBatch(() {
        b.write(1);
        a.write(1 + i * 2);
      });
      framework.withBatch(() {
        a.write(2 + i * 2);
        b.write(2);
      });
    };
  });

  iter(1);

  final timingResult = await fastestTest(10, () {
    for (int i = 0; i < 10000; i++) {
      iter(i);
    }
  });

  logPerfResult(PerfRowStrings(
    framework: framework.name,
    test: 'molBench',
    time: timingResult.timing.time.toString(),
  ));
}