在AngularDart中对变更检测进行基准测试

时间:2014-04-13 20:37:07

标签: dart angular-dart

几个版本之前,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有点快。我的基准太天真了吗?

1 个答案:

答案 0 :(得分:1)

请在此处查看我们的基准:https://github.com/angular/angular.dart/blob/master/perf/watch_group_perf.dart

您的用例应该大致相同,因为他们的案例受到字段解除引用速度的限制。真正的好处来自新算法的最小GC压力。