OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 library observe.test.benchmark.observable_list_benchmark; |
| 5 |
| 6 import 'package:observe/observe.dart'; |
| 7 import 'observation_benchmark_base.dart'; |
| 8 |
| 9 class ObservableListBenchmark extends ObservationBenchmarkBase { |
| 10 final int elementCount = 100; |
| 11 |
| 12 ObservableListBenchmark(int objectCount, int mutationCount, String config) |
| 13 : super('ObservableListBenchmark:$objectCount:$mutationCount:$config', |
| 14 objectCount, mutationCount, config); |
| 15 |
| 16 @override |
| 17 int mutateObject(ObservableList obj) { |
| 18 switch (config) { |
| 19 case 'update': |
| 20 var size = (elementCount / 10).floor(); |
| 21 for (var j = 0; j < size; j++) { |
| 22 obj[j * size]++; |
| 23 } |
| 24 return size; |
| 25 |
| 26 case 'splice': |
| 27 var size = (elementCount / 5).floor(); |
| 28 // No splice equivalent in List, so we hardcode it. |
| 29 var removed = obj.sublist(size, size * 2); |
| 30 obj.removeRange(size, size * 2); |
| 31 obj.insertAll(size * 2, removed); |
| 32 return size * 2; |
| 33 |
| 34 case 'push/pop': |
| 35 var val = obj.removeLast(); |
| 36 obj.add(val + 1); |
| 37 return 2; |
| 38 |
| 39 case 'shift/unshift': |
| 40 var val = obj.removeAt(0); |
| 41 obj.insert(0, val + 1); |
| 42 return 2; |
| 43 |
| 44 default: |
| 45 throw new ArgumentError( |
| 46 'Invalid config for ObservableListBenchmark: $config'); |
| 47 } |
| 48 } |
| 49 |
| 50 @override |
| 51 ObservableList newObject() { |
| 52 var list = new ObservableList(); |
| 53 for (int i = 0; i < elementCount; i++) { |
| 54 list.add(i); |
| 55 } |
| 56 return list; |
| 57 } |
| 58 } |
OLD | NEW |