mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 12:48:10 +00:00
2ca5300faf
This measures performance of integer hashCode. BUG=https://github.com/dart-lang/sdk/issues/48641 TEST=ci Change-Id: I276d26127137c70d59581b3689b2319b8e123c1e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/259240 Commit-Queue: Alexander Aprelev <aam@google.com> Reviewed-by: Ryan Macnak <rmacnak@google.com>
47 lines
1.3 KiB
Dart
47 lines
1.3 KiB
Dart
// 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();
|
|
}
|
|
}
|