几个版本之前,AngularDart添加了一个新的更改检测机制。我试图写一个简单的基准来比较新算法和之前使用过的算法。
这就是我提出的:
class User {
String firstName;
String lastName;
User(this.firstName, this.lastName);
}
class Benchmark extends BenchmarkBase {
TestBed tb;
Scope s;
Benchmark(this.tb) : super("Benchmark");
void warmup() {
times(20, (_){ tb.rootScope.apply(); });
}
void exercise() {
times(20, (_){ tb.rootScope.apply(); });
}
setup() {
s = tb.rootScope.createChild({});
times(10000, (i) {
final user = new User("First ${i}", "Last ${i}");
s.context["user${i}"] = user;
s.watch("user${i}.firstName", noop);
});
}
}
我为Angular 0.9.10和Angular 0.9.4进行了类似的测试。令人惊讶的是,Angular 0.9.4有点快。我的基准太天真了吗?
答案 0 :(得分:1)
请在此处查看我们的基准:https://github.com/angular/angular.dart/blob/master/perf/watch_group_perf.dart
您的用例应该大致相同,因为他们的案例受到字段解除引用速度的限制。真正的好处来自新算法的最小GC压力。