| Index: packages/observe/benchmark/observable_list_benchmark.dart
|
| diff --git a/packages/observe/benchmark/observable_list_benchmark.dart b/packages/observe/benchmark/observable_list_benchmark.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..21e56557c65cddb31f00b13ff69126bbaf1ddf2b
|
| --- /dev/null
|
| +++ b/packages/observe/benchmark/observable_list_benchmark.dart
|
| @@ -0,0 +1,58 @@
|
| +// Copyright (c) 2013, 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.
|
| +library observe.test.benchmark.observable_list_benchmark;
|
| +
|
| +import 'package:observe/observe.dart';
|
| +import 'observation_benchmark_base.dart';
|
| +
|
| +class ObservableListBenchmark extends ObservationBenchmarkBase {
|
| + final int elementCount = 100;
|
| +
|
| + ObservableListBenchmark(int objectCount, int mutationCount, String config)
|
| + : super('ObservableListBenchmark:$objectCount:$mutationCount:$config',
|
| + objectCount, mutationCount, config);
|
| +
|
| + @override
|
| + int mutateObject(ObservableList obj) {
|
| + switch (config) {
|
| + case 'update':
|
| + var size = (elementCount / 10).floor();
|
| + for (var j = 0; j < size; j++) {
|
| + obj[j * size]++;
|
| + }
|
| + return size;
|
| +
|
| + case 'splice':
|
| + var size = (elementCount / 5).floor();
|
| + // No splice equivalent in List, so we hardcode it.
|
| + var removed = obj.sublist(size, size * 2);
|
| + obj.removeRange(size, size * 2);
|
| + obj.insertAll(size * 2, removed);
|
| + return size * 2;
|
| +
|
| + case 'push/pop':
|
| + var val = obj.removeLast();
|
| + obj.add(val + 1);
|
| + return 2;
|
| +
|
| + case 'shift/unshift':
|
| + var val = obj.removeAt(0);
|
| + obj.insert(0, val + 1);
|
| + return 2;
|
| +
|
| + default:
|
| + throw new ArgumentError(
|
| + 'Invalid config for ObservableListBenchmark: $config');
|
| + }
|
| + }
|
| +
|
| + @override
|
| + ObservableList newObject() {
|
| + var list = new ObservableList();
|
| + for (int i = 0; i < elementCount; i++) {
|
| + list.add(i);
|
| + }
|
| + return list;
|
| + }
|
| +}
|
|
|