Merge pull request #1657 from Hixie/debugging

Reduce latency of low-volume debugPrint output
diff --git a/sky/packages/sky/lib/src/rendering/debug.dart b/sky/packages/sky/lib/src/rendering/debug.dart
index 49a6937..403fd76 100644
--- a/sky/packages/sky/lib/src/rendering/debug.dart
+++ b/sky/packages/sky/lib/src/rendering/debug.dart
@@ -47,11 +47,18 @@
     _debugPrintTask();
 }
 int _debugPrintedCharacters = 0;
-int _kDebugPrintCapacity = 32 * 1024;
+int _kDebugPrintCapacity = 16 * 1024;
+Duration _kDebugPrintPauseTime = const Duration(seconds: 1);
 Queue<String> _debugPrintBuffer = new Queue<String>();
+Stopwatch _debugPrintStopwatch = new Stopwatch();
 bool _debugPrintScheduled = false;
 void _debugPrintTask() {
   _debugPrintScheduled = false;
+  if (_debugPrintStopwatch.elapsed > _kDebugPrintPauseTime) {
+    _debugPrintStopwatch.stop();
+    _debugPrintStopwatch.reset();
+    _debugPrintedCharacters = 0;
+  }
   while (_debugPrintedCharacters < _kDebugPrintCapacity && _debugPrintBuffer.length > 0) {
     String line = _debugPrintBuffer.removeFirst();
     _debugPrintedCharacters += line.length; // TODO(ianh): Use the UTF-8 byte length instead
@@ -60,6 +67,8 @@
   if (_debugPrintBuffer.length > 0) {
     _debugPrintScheduled = true;
     _debugPrintedCharacters = 0;
-    new Timer(new Duration(seconds: 1), _debugPrintTask);
+    new Timer(_kDebugPrintPauseTime, _debugPrintTask);
+  } else {
+    _debugPrintStopwatch.start();
   }
 }