|  | // 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. | 
|  |  | 
|  | import 'dart:collection'; | 
|  | // Benchmark for https://github.com/dart-lang/sdk/issues/48641. | 
|  | // | 
|  | // Measures the average time needed for a lookup in Sets of integers. | 
|  |  | 
|  | import 'dart:math'; | 
|  |  | 
|  | 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(); | 
|  | } | 
|  | } |