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. };. .})();.