⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

Artifact 9452d9d3b969296de19439fdbcc70d081388133e5214d5e75a112f28322e633d:


0000: 76 61 72 20 4d 6f 6e 69 74 6f 72 69 6e 67 20 3d  var Monitoring =
0010: 20 4d 6f 6e 69 74 6f 72 69 6e 67 20 7c 7c 20 28   Monitoring || (
0020: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 0a 20 20  function() {..  
0030: 76 61 72 20 73 74 61 74 73 20 3d 20 6e 65 77 20  var stats = new 
0040: 4d 65 6d 6f 72 79 53 74 61 74 73 28 29 3b 0a 20  MemoryStats();. 
0050: 20 73 74 61 74 73 2e 64 6f 6d 45 6c 65 6d 65 6e   stats.domElemen
0060: 74 2e 73 74 79 6c 65 2e 70 6f 73 69 74 69 6f 6e  t.style.position
0070: 20 3d 20 27 66 69 78 65 64 27 3b 0a 20 20 73 74   = 'fixed';.  st
0080: 61 74 73 2e 64 6f 6d 45 6c 65 6d 65 6e 74 2e 73  ats.domElement.s
0090: 74 79 6c 65 2e 72 69 67 68 74 20 20 20 20 20 20  tyle.right      
00a0: 20 20 3d 20 27 30 70 78 27 3b 0a 20 20 73 74 61    = '0px';.  sta
00b0: 74 73 2e 64 6f 6d 45 6c 65 6d 65 6e 74 2e 73 74  ts.domElement.st
00c0: 79 6c 65 2e 62 6f 74 74 6f 6d 20 20 20 20 20 20  yle.bottom      
00d0: 20 3d 20 27 30 70 78 27 3b 0a 20 20 64 6f 63 75   = '0px';.  docu
00e0: 6d 65 6e 74 2e 62 6f 64 79 2e 61 70 70 65 6e 64  ment.body.append
00f0: 43 68 69 6c 64 28 20 73 74 61 74 73 2e 64 6f 6d  Child( stats.dom
0100: 45 6c 65 6d 65 6e 74 20 29 3b 0a 20 20 72 65 71  Element );.  req
0110: 75 65 73 74 41 6e 69 6d 61 74 69 6f 6e 46 72 61  uestAnimationFra
0120: 6d 65 28 66 75 6e 63 74 69 6f 6e 20 72 41 46 6c  me(function rAFl
0130: 6f 6f 70 28 29 7b 0a 20 20 20 20 20 20 73 74 61  oop(){.      sta
0140: 74 73 2e 75 70 64 61 74 65 28 29 3b 0a 20 20 20  ts.update();.   
0150: 20 20 20 72 65 71 75 65 73 74 41 6e 69 6d 61 74     requestAnimat
0160: 69 6f 6e 46 72 61 6d 65 28 72 41 46 6c 6f 6f 70  ionFrame(rAFloop
0170: 29 3b 0a 20 20 7d 29 3b 0a 0a 20 20 76 61 72 20  );.  });..  var 
0180: 52 65 6e 64 65 72 52 61 74 65 20 3d 20 66 75 6e  RenderRate = fun
0190: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 76  ction () {.    v
01a0: 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20 64  ar container = d
01b0: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c  ocument.createEl
01c0: 65 6d 65 6e 74 28 20 27 64 69 76 27 20 29 3b 0a  ement( 'div' );.
01d0: 20 20 20 20 63 6f 6e 74 61 69 6e 65 72 2e 69 64      container.id
01e0: 20 20 3d 20 27 73 74 61 74 73 27 3b 0a 20 20 20    = 'stats';.   
01f0: 20 63 6f 6e 74 61 69 6e 65 72 2e 73 74 79 6c 65   container.style
0200: 2e 63 73 73 54 65 78 74 20 3d 20 27 77 69 64 74  .cssText = 'widt
0210: 68 3a 31 35 30 70 78 3b 6f 70 61 63 69 74 79 3a  h:150px;opacity:
0220: 30 2e 39 3b 63 75 72 73 6f 72 3a 70 6f 69 6e 74  0.9;cursor:point
0230: 65 72 3b 70 6f 73 69 74 69 6f 6e 3a 66 69 78 65  er;position:fixe
0240: 64 3b 72 69 67 68 74 3a 38 30 70 78 3b 62 6f 74  d;right:80px;bot
0250: 74 6f 6d 3a 30 70 78 3b 27 3b 0a 0a 20 20 20 20  tom:0px;';..    
0260: 76 61 72 20 6d 73 44 69 76 20 3d 20 64 6f 63 75  var msDiv = docu
0270: 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65  ment.createEleme
0280: 6e 74 28 20 27 64 69 76 27 20 29 3b 0a 20 20 20  nt( 'div' );.   
0290: 20 6d 73 44 69 76 2e 69 64 20 20 3d 20 27 6d 73   msDiv.id  = 'ms
02a0: 27 3b 0a 20 20 20 20 6d 73 44 69 76 2e 73 74 79  ';.    msDiv.sty
02b0: 6c 65 2e 63 73 73 54 65 78 74 20 3d 20 27 70 61  le.cssText = 'pa
02c0: 64 64 69 6e 67 3a 30 20 30 20 33 70 78 20 33 70  dding:0 0 3px 3p
02d0: 78 3b 74 65 78 74 2d 61 6c 69 67 6e 3a 6c 65 66  x;text-align:lef
02e0: 74 3b 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c  t;background-col
02f0: 6f 72 3a 23 30 32 30 3b 27 3b 0a 20 20 20 20 63  or:#020;';.    c
0300: 6f 6e 74 61 69 6e 65 72 2e 61 70 70 65 6e 64 43  ontainer.appendC
0310: 68 69 6c 64 28 20 6d 73 44 69 76 20 29 3b 0a 0a  hild( msDiv );..
0320: 20 20 20 20 76 61 72 20 6d 73 54 65 78 74 20 20      var msText  
0330: 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  = document.creat
0340: 65 45 6c 65 6d 65 6e 74 28 20 27 64 69 76 27 20  eElement( 'div' 
0350: 29 3b 0a 20 20 20 20 6d 73 54 65 78 74 2e 69 64  );.    msText.id
0360: 20 3d 20 27 6d 73 54 65 78 74 27 3b 0a 20 20 20   = 'msText';.   
0370: 20 6d 73 54 65 78 74 2e 73 74 79 6c 65 2e 63 73   msText.style.cs
0380: 73 54 65 78 74 20 3d 20 27 63 6f 6c 6f 72 3a 23  sText = 'color:#
0390: 30 66 30 3b 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a  0f0;font-family:
03a0: 48 65 6c 76 65 74 69 63 61 2c 41 72 69 61 6c 2c  Helvetica,Arial,
03b0: 73 61 6e 73 2d 73 65 72 69 66 3b 66 6f 6e 74 2d  sans-serif;font-
03c0: 73 69 7a 65 3a 39 70 78 3b 66 6f 6e 74 2d 77 65  size:9px;font-we
03d0: 69 67 68 74 3a 62 6f 6c 64 3b 6c 69 6e 65 2d 68  ight:bold;line-h
03e0: 65 69 67 68 74 3a 31 35 70 78 27 3b 0a 20 20 20  eight:15px';.   
03f0: 20 6d 73 54 65 78 74 2e 69 6e 6e 65 72 48 54 4d   msText.innerHTM
0400: 4c 3d 20 27 52 65 70 61 69 6e 74 20 72 61 74 65  L= 'Repaint rate
0410: 3a 20 30 2f 73 65 63 27 3b 0a 20 20 20 20 6d 73  : 0/sec';.    ms
0420: 44 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  Div.appendChild(
0430: 20 6d 73 54 65 78 74 20 29 3b 0a 0a 20 20 20 20   msText );..    
0440: 76 61 72 20 62 75 63 6b 65 74 53 69 7a 65 20 3d  var bucketSize =
0450: 20 32 30 3b 0a 20 20 20 20 76 61 72 20 62 75 63   20;.    var buc
0460: 6b 65 74 20 3d 20 5b 5d 3b 0a 20 20 20 20 76 61  ket = [];.    va
0470: 72 20 6c 61 73 74 54 69 6d 65 20 20 3d 20 44 61  r lastTime  = Da
0480: 74 65 2e 6e 6f 77 28 29 3b 0a 20 20 20 20 72 65  te.now();.    re
0490: 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 64 6f 6d  turn {.      dom
04a0: 45 6c 65 6d 65 6e 74 3a 20 63 6f 6e 74 61 69 6e  Element: contain
04b0: 65 72 2c 0a 20 20 20 20 20 20 70 69 6e 67 3a 20  er,.      ping: 
04c0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
04d0: 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 20        var start 
04e0: 3d 20 6c 61 73 74 54 69 6d 65 3b 0a 20 20 20 20  = lastTime;.    
04f0: 20 20 20 20 76 61 72 20 73 74 6f 70 20 3d 20 44      var stop = D
0500: 61 74 65 2e 6e 6f 77 28 29 3b 0a 20 20 20 20 20  ate.now();.     
0510: 20 20 20 76 61 72 20 72 61 74 65 20 3d 20 31 30     var rate = 10
0520: 30 30 20 2f 20 28 73 74 6f 70 20 2d 20 73 74 61  00 / (stop - sta
0530: 72 74 29 3b 0a 20 20 20 20 20 20 20 20 62 75 63  rt);.        buc
0540: 6b 65 74 2e 70 75 73 68 28 72 61 74 65 29 3b 0a  ket.push(rate);.
0550: 20 20 20 20 20 20 20 20 69 66 20 28 62 75 63 6b          if (buck
0560: 65 74 2e 6c 65 6e 67 74 68 20 3e 20 62 75 63 6b  et.length > buck
0570: 65 74 53 69 7a 65 29 20 7b 0a 20 20 20 20 20 20  etSize) {.      
0580: 20 20 20 20 62 75 63 6b 65 74 2e 73 68 69 66 74      bucket.shift
0590: 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  ();.        }.  
05a0: 20 20 20 20 20 20 76 61 72 20 73 75 6d 20 3d 20        var sum = 
05b0: 30 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28  0;.        for (
05c0: 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 62  var i = 0; i < b
05d0: 75 63 6b 65 74 2e 6c 65 6e 67 74 68 3b 20 69 2b  ucket.length; i+
05e0: 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 73  +) {.          s
05f0: 75 6d 20 3d 20 73 75 6d 20 2b 20 62 75 63 6b 65  um = sum + bucke
0600: 74 5b 69 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a  t[i];.        }.
0610: 20 20 20 20 20 20 20 20 6d 73 54 65 78 74 2e 74          msText.t
0620: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 52 65  extContent = "Re
0630: 70 61 69 6e 74 20 72 61 74 65 3a 20 22 20 2b 20  paint rate: " + 
0640: 28 73 75 6d 20 2f 20 62 75 63 6b 65 74 2e 6c 65  (sum / bucket.le
0650: 6e 67 74 68 29 2e 74 6f 46 69 78 65 64 28 32 29  ngth).toFixed(2)
0660: 20 2b 20 22 2f 73 65 63 22 3b 0a 20 20 20 20 20   + "/sec";.     
0670: 20 20 20 6c 61 73 74 54 69 6d 65 20 3d 20 73 74     lastTime = st
0680: 6f 70 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20  op;.      }.    
0690: 7d 0a 20 20 7d 3b 0a 0a 20 20 76 61 72 20 72 65  }.  };..  var re
06a0: 6e 64 65 72 52 61 74 65 20 3d 20 6e 65 77 20 52  nderRate = new R
06b0: 65 6e 64 65 72 52 61 74 65 28 29 3b 0a 20 20 64  enderRate();.  d
06c0: 6f 63 75 6d 65 6e 74 2e 62 6f 64 79 2e 61 70 70  ocument.body.app
06d0: 65 6e 64 43 68 69 6c 64 28 20 72 65 6e 64 65 72  endChild( render
06e0: 52 61 74 65 2e 64 6f 6d 45 6c 65 6d 65 6e 74 20  Rate.domElement 
06f0: 29 3b 0a 0a 20 20 72 65 74 75 72 6e 20 7b 0a 20  );..  return {. 
0700: 20 20 20 6d 65 6d 6f 72 79 53 74 61 74 73 3a 20     memoryStats: 
0710: 73 74 61 74 73 2c 0a 20 20 20 20 72 65 6e 64 65  stats,.    rende
0720: 72 52 61 74 65 3a 20 72 65 6e 64 65 72 52 61 74  rRate: renderRat
0730: 65 0a 20 20 7d 3b 0a 20 20 0a 7d 29 28 29 3b 0a  e.  };.  .})();.