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 |