|  | // Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import 'dart:isolate'; | 
|  |  | 
|  | import 'latency.dart'; | 
|  | import 'regexp_benchmark.dart'; | 
|  |  | 
|  | Future<void> main() async { | 
|  | final exitPort = ReceivePort(); | 
|  | final exitFuture = exitPort.first; | 
|  | final isolate = await Isolate.spawn(run, null, onExit: exitPort.sendPort); | 
|  |  | 
|  | // Measure event loop latency. | 
|  | const tickDuration = Duration(milliseconds: 1); | 
|  | const numberOfTicks = 8 * 1000; // min 8 seconds. | 
|  | final EventLoopLatencyStats stats = await measureEventLoopLatency( | 
|  | tickDuration, | 
|  | numberOfTicks, | 
|  | ); | 
|  |  | 
|  | // Kill isolate & wait until it's dead. | 
|  | isolate.kill(priority: Isolate.immediate); | 
|  | await exitFuture; | 
|  |  | 
|  | // Report event loop latency statistics. | 
|  | stats.report('EventLoopLatencyRegexp'); | 
|  | } | 
|  |  | 
|  | void run(dynamic msg) { | 
|  | while (true) { | 
|  | RegexpBenchmark().run(); | 
|  | } | 
|  | } |