anchor.diff:  
         if (test < numTests) {
           // Start new test
  -        print("TEST $test STARTING");
  -        setupTest(test);
  +        PerformanceTest perfTest = createTest(test);
  +        addChild(perfTest);
  +
  +        print("TEST ${test + 1}/$numTests STARTING: ${perfTest.name}");
  +
           testStartTime = new DateTime.now().millisecondsSinceEpoch;
         }
         test++;
  
positive.code: 
  class TestPerformance extends NodeWithSize {
    final int numFramesPerTest = 100;
    final int numTests = 3;
  
    TestPerformance() : super(new Size(1024.0, 1024.0)) {
    }
  
negative.code:     return new sky.RSTransform(scos, ssin, tx, ty);
    }
  }
  
  class TestPerformanceAtlas2 extends PerformanceTest {
    String get name => "1001 rects drawAtlas (24% offscreen never added)";
  
    final int grid = 100;
  
    double rotation = 0.0;
    List<Rect> rects = [];
    Paint cachedPaint = new Paint()
      ..setFilterQuality(sky.FilterQuality.low)
      ..isAntiAlias = false;
  
    TestPerformanceAtlas2() {
      for (int x = 12; x < grid - 12; x++) {
        for (int y = 0; y < grid; y++) {
          rects.add(_spriteSheet["asteroid_big_1.png"].frame);
        }
      }
      rects.add(_spriteSheet["asteroid_big_1.png"].frame);
    }
  
    void paint(PaintingCanvas canvas) {
      // Setup transforms
      List<sky.RSTransform> transforms = [];
  
      for (int x = 12; x < grid - 12; x++) {
        for (int y = 0; y < grid; y++) {
          double xPos = x * 1024.0 / (grid - 1);
          double yPos = y * 1024.0 / (grid - 1);
  
          transforms.add(createTransform(xPos, yPos, rects[0].size.width / 2.0, rects[0].size.height / 2.0, rotation, 1.0));
        }
      }
  
      transforms.add(createTransform(512.0, 512.0, rects[0].size.width / 2.0, rects[0].size.height / 2.0, rotation, 1.0));
  
      // Draw atlas
      Rect cullRect = spriteBox.visibleArea;
      canvas.drawAtlas(_spriteSheet.image, transforms, rects, null, null, cullRect, cachedPaint);
    }
  
    void update(double dt) {
      rotation += 1.0;
    }
  
    sky.RSTransform createTransform(double x, double y, double ax, double ay, double rot, double scale) {
      double scos = math.cos(convertDegrees2Radians(rot)) * scale;
      double ssin = math.sin(convertDegrees2Radians(rot)) * scale;
      double tx = x + -scos * ax + ssin * ay;
      double ty = y + -ssin * ax - scos * ay;
      return new sky.RSTransform(scos, ssin, tx, ty);
    }
  }
  