|  | // Copyright (c) 2022, 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. | 
|  |  | 
|  | // Benchmark for https://github.com/dart-lang/sdk/issues/48641. | 
|  | // | 
|  | // Measures the average time needed for a lookup in Sets of integers. | 
|  |  | 
|  | // @dart=2.9 | 
|  |  | 
|  | import 'dart:math'; | 
|  | import 'dart:collection'; | 
|  | import 'package:benchmark_harness/benchmark_harness.dart'; | 
|  |  | 
|  | class SetBenchmark extends BenchmarkBase { | 
|  | SetBenchmark(String name, this.mySet) : super(name); | 
|  |  | 
|  | final Set<int> mySet; | 
|  |  | 
|  | @override | 
|  | void run() { | 
|  | mySet.contains(123456789); | 
|  | } | 
|  | } | 
|  |  | 
|  | void main() { | 
|  | final list = [ | 
|  | for (int i = 0; i < 14790; i++) (i + 1) * 0x10000000 + 123456789 | 
|  | ]; | 
|  |  | 
|  | final r = Random(); | 
|  | final randomList = List<int>.generate(14790, (_) => r.nextInt(1 << 31)); | 
|  |  | 
|  | final benchmarks = [ | 
|  | () => SetBenchmark("IntegerSetLookup.DefaultHashSet", {...list}), | 
|  | () => | 
|  | SetBenchmark("IntegerSetLookup.HashSet", HashSet<int>()..addAll(list)), | 
|  | () => | 
|  | SetBenchmark("IntegerSetLookup.DefaultHashSet_Random", {...randomList}), | 
|  | () => SetBenchmark( | 
|  | "IntegerSetLookup.HashSet_Random", HashSet<int>()..addAll(randomList)), | 
|  | ]; | 
|  | for (final benchmark in benchmarks) { | 
|  | benchmark().report(); | 
|  | } | 
|  | } |