Skip to content

Commit

Permalink
add a basic benchmark for DeepCollectionEquality
Browse files Browse the repository at this point in the history
  • Loading branch information
jakemac53 committed Nov 4, 2024
1 parent 4b62792 commit 5f150f1
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
65 changes: 65 additions & 0 deletions pkgs/collection/benchmark/deep_collection_equality.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright (c) 2014, 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 'package:benchmark_harness/benchmark_harness.dart';
import 'package:collection/collection.dart';

void main() {
for (var unordered in [true, false]) {
DeepCollectionEqualityEqualsBenchmark(unordered).report();
DeepCollectionEqualityHashBenchmark(unordered).report();
}
}

class DeepCollectionEqualityBase extends BenchmarkBase {
final DeepCollectionEquality equality;

DeepCollectionEqualityBase(bool unordered, String function)
: equality = unordered
? const DeepCollectionEquality.unordered()
: const DeepCollectionEquality(),
super('DeepCollectionQuality${unordered ? 'Unordered' : ''}.$function');
}

class DeepCollectionEqualityEqualsBenchmark extends DeepCollectionEqualityBase {
DeepCollectionEqualityEqualsBenchmark(bool unordered)
: super(unordered, 'hash');

@override
void run() {
hash = equality.hash(mapA);
}

static int hash = 0;
}

class DeepCollectionEqualityHashBenchmark extends DeepCollectionEqualityBase {
DeepCollectionEqualityHashBenchmark(bool unordered)
: super(unordered, 'equals');

@override
void run() {
equals = equality.equals(mapA, mapB);
}

static bool equals = false;
}

final mapA = {
for (var i = 0; i < 100; i++)
{
[
for (var j = i; j < i + 10; j++) j,
]: i.isEven ? i : '$i',
}
};

final mapB = {
for (var i = 0; i < 100; i++)
{
[
for (var j = i; j < i + 10; j++) j,
]: i.isEven ? i : '$i',
}
};
1 change: 1 addition & 0 deletions pkgs/collection/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ environment:
sdk: ^3.4.0

dev_dependencies:
benchmark_harness: ^2.3.1
dart_flutter_team_lints: ^3.0.0
test: ^1.16.6

0 comments on commit 5f150f1

Please sign in to comment.