anchor.diff:        }
         return secondTime - firstTime;
       });
  -    p('Lint rule timings');
       buf.write('<table>');
       _writeRow(['Lint code', 'Time (in ms)'], header: true);
  -    int totalLintTime = 0;
       for (var rule in rules) {
         int time = lintRegistry.getTimer(rule).elapsedMilliseconds;
  -      totalLintTime += time;
  -      _writeRow([rule.lintCode.name, time.toString()]);
  +      _writeRow([rule.lintCode.name, printMilliseconds(time)]);
       }
       buf.write('</table>');
  -    p('Total time spent in lints: $totalLintTime ms');
     }
   }
   
  
positive.code:     tags.forEach(writeRow);
      buf.write('</table>');
  
      List<LintRule> rules = Registry.ruleRegistry.rules.toList();
      rules.sort((first, second) {
        int firstTime = lintRegistry.getTimer(first).elapsedMilliseconds;
        int secondTime = lintRegistry.getTimer(second).elapsedMilliseconds;
  
negative.code:   }
  }
  
  class ProfilePage extends DiagnosticPageWithNav {
    ProfilePage(DiagnosticsSite site)
        : super(site, 'profile', 'Profiling Info',
              description: 'Profiling performance tag data and lint timings.');
  
    @override
    void generateContent(Map<String, String> params) {
      h3('Profiling performance tag data');
  
      // prepare sorted tags
      List<PerformanceTag> tags = PerformanceTag.all.toList();
      tags.remove(ServerPerformanceStatistics.idle);
      tags.remove(PerformanceTag.unknown);
      tags.removeWhere((tag) => tag.elapsedMs == 0);
      tags.sort((a, b) => b.elapsedMs - a.elapsedMs);
  
      // print total time
      int totalTime =
          tags.fold<int>(0, (int a, PerformanceTag tag) => a + tag.elapsedMs);
      p('Total measured time: ${printMilliseconds(totalTime)}');
  
      // draw a pie chart
      String rowData =
  