| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 4 for details. All rights reserved. Use of this source code is governed by a | 4 for details. All rights reserved. Use of this source code is governed by a |
| 5 BSD-style license that can be found in the LICENSE file. | 5 BSD-style license that can be found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 <html lang="en"> | 7 <html lang="en"> |
| 8 <head> | 8 <head> |
| 9 <!-- | 9 <!-- |
| 10 This performance test updates a 10 text binding (depending on the same | 10 This performance test runs has 100 bindings, which get updated on every |
| 11 variable) on each iteration. | 11 iteration of the benchmark. |
| 12 --> | 12 --> |
| 13 <meta charset="utf-8"> | 13 <meta charset="utf-8"> |
| 14 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 14 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| 15 <script type="application/javascript" src="testing.js"></script> | 15 <script type="application/javascript" src="testing.js"></script> |
| 16 <script type="application/javascript" src="start_dart.js"></script> | 16 <script type="application/javascript" src="start_dart.js"></script> |
| 17 </head> | 17 </head> |
| 18 <body> | 18 <body> |
| 19 <div> | 19 <template iterate="item in items"> |
| 20 <span>{{x}}</span> | 20 {{item.x}} |
| 21 <span>{{x}}</span> | 21 </template> |
| 22 <span>{{x}}</span> | |
| 23 <span id='test'>{{x}}</span> | |
| 24 <span>{{x}}</span> | |
| 25 <span>{{x}}</span> | |
| 26 <span>{{x}}</span> | |
| 27 <span>{{x}}</span> | |
| 28 <span>{{x}}</span> | |
| 29 <span>{{x}}</span> | |
| 30 </div> | |
| 31 <script type="application/dart"> | 22 <script type="application/dart"> |
| 32 import 'dart:html'; | 23 import 'dart:html'; |
| 33 import 'package:web_ui/web_ui.dart'; | 24 import 'package:web_ui/web_ui.dart'; |
| 34 import 'package:unittest/unittest.dart'; | 25 import 'package:unittest/unittest.dart'; |
| 35 import 'perf_common.dart'; | 26 import 'perf_common.dart'; |
| 27 import 'observe_model.dart'; |
| 36 | 28 |
| 37 main() { | 29 main() { |
| 38 useShadowDom = false; | 30 useShadowDom = false; |
| 31 useObservers = true; |
| 39 window.setTimeout(() { | 32 window.setTimeout(() { |
| 40 var bench = new BindingBenchmark(); | 33 var bench = new BindingBenchmark(); |
| 41 perfDone(bench.measure()); | 34 perfDone(bench.measure()); |
| 42 }, 0); | 35 }, 0); |
| 43 } | 36 } |
| 44 | 37 |
| 45 int x = 0; | 38 final ObservableList<Model> items = (() { |
| 39 var items = useObservers ? new ObservableList(10000) : new List(10000); |
| 40 for (int i = 0; i < items.length; i++) items[i] = new Model(); |
| 41 return items; |
| 42 })(); |
| 46 | 43 |
| 47 class BindingBenchmark extends BenchmarkBase { | 44 class BindingBenchmark extends BenchmarkBase { |
| 48 BindingBenchmark() : super('bind-10'); | 45 BindingBenchmark() : super('change-1-of-100'); |
| 49 run() { | 46 run() { |
| 50 x++; | 47 items[42].x++; |
| 51 dispatch(); | 48 if (useObservers) { |
| 52 expect(query('#test').innerHtml, "$x"); | 49 deliverChangesSync(); |
| 50 } else { |
| 51 dispatch(); |
| 52 } |
| 53 } | 53 } |
| 54 } | 54 } |
| 55 </script> | 55 </script> |
| 56 </body> | 56 </body> |
| 57 </html> | 57 </html> |
| OLD | NEW |