Updated rStats
This commit is contained in:
parent
6064df572e
commit
2f150b614c
|
@ -1,73 +1,86 @@
|
||||||
.rs-base{
|
.alarm {
|
||||||
position: absolute;
|
color: #b70000;
|
||||||
z-index: 10000;
|
text-shadow: 0 0 0 #b70000,
|
||||||
padding: 10px;
|
0 0 1px #ffffff,
|
||||||
background-color: #222;
|
0 0 1px #ffffff,
|
||||||
font-size: 10px;
|
0 0 2px #ffffff,
|
||||||
line-height: 1.2em;
|
0 0 2px #ffffff,
|
||||||
width: 350px;
|
0 0 3px #ffffff,
|
||||||
font-family: 'Roboto Condensed', tahoma, sans-serif;
|
0 0 3px #ffffff,
|
||||||
left: 0;
|
0 0 4px #ffffff,
|
||||||
top: 0;
|
0 0 4px #ffffff;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base h1{
|
.rs-base {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 10000;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 10px;
|
||||||
|
width: 350px;
|
||||||
|
background-color: #222222;
|
||||||
|
font-size: 10px;
|
||||||
|
font-family: 'Roboto Condensed', tahoma, sans-serif;
|
||||||
|
line-height: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rs-base h1 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
|
||||||
font-size: 1.4em;
|
|
||||||
color: #fff;
|
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
padding: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.4em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-group{
|
.rs-base div.rs-group {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-group.hidden{
|
.rs-base div.rs-group.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-fraction{
|
.rs-base div.rs-fraction {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-fraction p{
|
.rs-base div.rs-fraction p {
|
||||||
width: 120px;
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
width: 120px;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-legend{
|
.rs-base div.rs-legend {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-counter-base{
|
.rs-base div.rs-counter-base {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: 2px 0;
|
margin: 2px 0;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base span.rs-counter-id{
|
.rs-base span.rs-counter-id {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
|
||||||
top: 0;
|
top: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base div.rs-counter-value{
|
.rs-base div.rs-counter-value {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
left: 90px;
|
left: 90px;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
top: 0;
|
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rs-base canvas.rs-canvas{
|
.rs-base canvas.rs-canvas {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,265 @@
|
||||||
|
window.glStats = function () {
|
||||||
|
|
||||||
|
var _rS = null;
|
||||||
|
|
||||||
|
var _totalDrawArraysCalls = 0,
|
||||||
|
_totalDrawElementsCalls = 0,
|
||||||
|
_totalUseProgramCalls = 0,
|
||||||
|
_totalFaces = 0,
|
||||||
|
_totalVertices = 0,
|
||||||
|
_totalPoints = 0,
|
||||||
|
_totalBindTexures = 0;
|
||||||
|
|
||||||
|
function _h ( f, c ) {
|
||||||
|
return function () {
|
||||||
|
c.apply( this, arguments );
|
||||||
|
f.apply( this, arguments );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
WebGLRenderingContext.prototype.drawArrays = _h( WebGLRenderingContext.prototype.drawArrays, function () {
|
||||||
|
_totalDrawArraysCalls++;
|
||||||
|
if ( arguments[ 0 ] == this.POINTS ) _totalPoints += arguments[ 2 ];
|
||||||
|
else _totalVertices += arguments[ 2 ];
|
||||||
|
} );
|
||||||
|
|
||||||
|
WebGLRenderingContext.prototype.drawElements = _h( WebGLRenderingContext.prototype.drawElements, function () {
|
||||||
|
_totalDrawElementsCalls++;
|
||||||
|
_totalFaces += arguments[ 1 ] / 3;
|
||||||
|
_totalVertices += arguments[ 1 ];
|
||||||
|
} );
|
||||||
|
|
||||||
|
WebGLRenderingContext.prototype.useProgram = _h( WebGLRenderingContext.prototype.useProgram, function () {
|
||||||
|
_totalUseProgramCalls++;
|
||||||
|
} );
|
||||||
|
|
||||||
|
WebGLRenderingContext.prototype.bindTexture = _h( WebGLRenderingContext.prototype.bindTexture, function () {
|
||||||
|
_totalBindTexures++;
|
||||||
|
} );
|
||||||
|
|
||||||
|
var _values = {
|
||||||
|
allcalls: {
|
||||||
|
over: 3000,
|
||||||
|
caption: 'Calls (hook)'
|
||||||
|
},
|
||||||
|
drawelements: {
|
||||||
|
caption: 'drawElements (hook)'
|
||||||
|
},
|
||||||
|
drawarrays: {
|
||||||
|
caption: 'drawArrays (hook)'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _groups = [ {
|
||||||
|
caption: 'WebGL',
|
||||||
|
values: [ 'allcalls', 'drawelements', 'drawarrays', 'useprogram', 'bindtexture', 'glfaces', 'glvertices', 'glpoints' ]
|
||||||
|
} ];
|
||||||
|
|
||||||
|
var _fractions = [ {
|
||||||
|
base: 'allcalls',
|
||||||
|
steps: [ 'drawelements', 'drawarrays' ]
|
||||||
|
} ];
|
||||||
|
|
||||||
|
function _update () {
|
||||||
|
_rS( 'allcalls' ).set( _totalDrawArraysCalls + _totalDrawElementsCalls );
|
||||||
|
_rS( 'drawElements' ).set( _totalDrawElementsCalls );
|
||||||
|
_rS( 'drawArrays' ).set( _totalDrawArraysCalls );
|
||||||
|
_rS( 'bindTexture' ).set( _totalBindTexures );
|
||||||
|
_rS( 'useProgram' ).set( _totalUseProgramCalls );
|
||||||
|
_rS( 'glfaces' ).set( _totalFaces );
|
||||||
|
_rS( 'glvertices' ).set( _totalVertices );
|
||||||
|
_rS( 'glpoints' ).set( _totalPoints );
|
||||||
|
}
|
||||||
|
|
||||||
|
function _start () {
|
||||||
|
_totalDrawArraysCalls = 0;
|
||||||
|
_totalDrawElementsCalls = 0;
|
||||||
|
_totalUseProgramCalls = 0;
|
||||||
|
_totalFaces = 0;
|
||||||
|
_totalVertices = 0;
|
||||||
|
_totalPoints = 0;
|
||||||
|
_totalBindTexures = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _end () {}
|
||||||
|
|
||||||
|
function _attach ( r ) {
|
||||||
|
_rS = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
update: _update,
|
||||||
|
start: _start,
|
||||||
|
end: _end,
|
||||||
|
attach: _attach,
|
||||||
|
values: _values,
|
||||||
|
groups: _groups,
|
||||||
|
fractions: _fractions
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
window.threeStats = function ( renderer ) {
|
||||||
|
|
||||||
|
var _rS = null;
|
||||||
|
|
||||||
|
var _values = {
|
||||||
|
'renderer.info.memory.geometries': {
|
||||||
|
caption: 'Geometries'
|
||||||
|
},
|
||||||
|
'renderer.info.memory.textures': {
|
||||||
|
caption: 'Textures'
|
||||||
|
},
|
||||||
|
'renderer.info.programs': {
|
||||||
|
caption: 'Programs'
|
||||||
|
},
|
||||||
|
'renderer.info.render.calls': {
|
||||||
|
caption: 'Calls'
|
||||||
|
},
|
||||||
|
'renderer.info.render.faces': {
|
||||||
|
caption: 'Faces',
|
||||||
|
over: 1000
|
||||||
|
},
|
||||||
|
'renderer.info.render.points': {
|
||||||
|
caption: 'Points'
|
||||||
|
},
|
||||||
|
'renderer.info.render.vertices': {
|
||||||
|
caption: 'Vertices'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _groups = [ {
|
||||||
|
caption: 'Three.js - Memory',
|
||||||
|
values: [ 'renderer.info.memory.geometries', 'renderer.info.programs', 'renderer.info.memory.textures' ]
|
||||||
|
}, {
|
||||||
|
caption: 'Three.js - Render',
|
||||||
|
values: [ 'renderer.info.render.calls', 'renderer.info.render.faces', 'renderer.info.render.points', 'renderer.info.render.vertices' ]
|
||||||
|
} ];
|
||||||
|
|
||||||
|
var _fractions = [];
|
||||||
|
|
||||||
|
function _update () {
|
||||||
|
|
||||||
|
_rS( 'renderer.info.memory.geometries' ).set( renderer.info.memory.geometries );
|
||||||
|
//_rS( 'renderer.info.programs' ).set( renderer.info.programs.length );
|
||||||
|
_rS( 'renderer.info.memory.textures' ).set( renderer.info.memory.textures );
|
||||||
|
_rS( 'renderer.info.render.calls' ).set( renderer.info.render.calls );
|
||||||
|
_rS( 'renderer.info.render.faces' ).set( renderer.info.render.faces );
|
||||||
|
_rS( 'renderer.info.render.points' ).set( renderer.info.render.points );
|
||||||
|
_rS( 'renderer.info.render.vertices' ).set( renderer.info.render.vertices );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function _start () {}
|
||||||
|
|
||||||
|
function _end () {}
|
||||||
|
|
||||||
|
function _attach ( r ) {
|
||||||
|
_rS = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
update: _update,
|
||||||
|
start: _start,
|
||||||
|
end: _end,
|
||||||
|
attach: _attach,
|
||||||
|
values: _values,
|
||||||
|
groups: _groups,
|
||||||
|
fractions: _fractions
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* From https://github.com/paulirish/memory-stats.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
window.BrowserStats = function () {
|
||||||
|
|
||||||
|
var _rS = null;
|
||||||
|
|
||||||
|
var _usedJSHeapSize = 0,
|
||||||
|
_totalJSHeapSize = 0;
|
||||||
|
|
||||||
|
var memory = {
|
||||||
|
usedJSHeapSize: 0,
|
||||||
|
totalJSHeapSize: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( window.performance && performance.memory )
|
||||||
|
memory = performance.memory;
|
||||||
|
|
||||||
|
if ( memory.totalJSHeapSize === 0 ) {
|
||||||
|
console.warn( 'totalJSHeapSize === 0... performance.memory is only available in Chrome .' );
|
||||||
|
}
|
||||||
|
|
||||||
|
var _values = {
|
||||||
|
memory: {
|
||||||
|
caption: 'Used Memory',
|
||||||
|
average: true,
|
||||||
|
avgMs: 1000,
|
||||||
|
over: 22
|
||||||
|
},
|
||||||
|
total: {
|
||||||
|
caption: 'Total Memory'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _groups = [ {
|
||||||
|
caption: 'Browser',
|
||||||
|
values: [ 'memory', 'total' ]
|
||||||
|
} ];
|
||||||
|
|
||||||
|
var _fractions = [ {
|
||||||
|
base: 'total',
|
||||||
|
steps: [ 'memory' ]
|
||||||
|
} ];
|
||||||
|
|
||||||
|
var log1024 = Math.log( 1024 );
|
||||||
|
|
||||||
|
function _size ( v ) {
|
||||||
|
|
||||||
|
var precision = 100; //Math.pow(10, 2);
|
||||||
|
var i = Math.floor( Math.log( v ) / log1024 );
|
||||||
|
if( v === 0 ) i = 1;
|
||||||
|
return Math.round( v * precision / Math.pow( 1024, i ) ) / precision; // + ' ' + sizes[i];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function _update () {
|
||||||
|
_usedJSHeapSize = _size( memory.usedJSHeapSize );
|
||||||
|
_totalJSHeapSize = _size( memory.totalJSHeapSize );
|
||||||
|
|
||||||
|
_rS( 'memory' ).set( _usedJSHeapSize );
|
||||||
|
_rS( 'total' ).set( _totalJSHeapSize );
|
||||||
|
}
|
||||||
|
|
||||||
|
function _start () {
|
||||||
|
_usedJSHeapSize = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _end () {}
|
||||||
|
|
||||||
|
function _attach ( r ) {
|
||||||
|
_rS = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
update: _update,
|
||||||
|
start: _start,
|
||||||
|
end: _end,
|
||||||
|
attach: _attach,
|
||||||
|
values: _values,
|
||||||
|
groups: _groups,
|
||||||
|
fractions: _fractions
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
if (typeof module === 'object') {
|
||||||
|
module.exports = {
|
||||||
|
glStats: window.glStats,
|
||||||
|
threeStats: window.threeStats,
|
||||||
|
BrowserStats: window.BrowserStats
|
||||||
|
};
|
||||||
|
}
|
|
@ -451,269 +451,3 @@ window.rStats = function rStats ( settings ) {
|
||||||
if (typeof module === 'object') {
|
if (typeof module === 'object') {
|
||||||
module.exports = window.rStats;
|
module.exports = window.rStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.glStats = function () {
|
|
||||||
|
|
||||||
var _rS = null;
|
|
||||||
|
|
||||||
var _totalDrawArraysCalls = 0,
|
|
||||||
_totalDrawElementsCalls = 0,
|
|
||||||
_totalUseProgramCalls = 0,
|
|
||||||
_totalFaces = 0,
|
|
||||||
_totalVertices = 0,
|
|
||||||
_totalPoints = 0,
|
|
||||||
_totalBindTexures = 0;
|
|
||||||
|
|
||||||
function _h ( f, c ) {
|
|
||||||
return function () {
|
|
||||||
c.apply( this, arguments );
|
|
||||||
f.apply( this, arguments );
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
WebGLRenderingContext.prototype.drawArrays = _h( WebGLRenderingContext.prototype.drawArrays, function () {
|
|
||||||
_totalDrawArraysCalls++;
|
|
||||||
if ( arguments[ 0 ] == this.POINTS ) _totalPoints += arguments[ 2 ];
|
|
||||||
else _totalVertices += arguments[ 2 ];
|
|
||||||
} );
|
|
||||||
|
|
||||||
WebGLRenderingContext.prototype.drawElements = _h( WebGLRenderingContext.prototype.drawElements, function () {
|
|
||||||
_totalDrawElementsCalls++;
|
|
||||||
_totalFaces += arguments[ 1 ] / 3;
|
|
||||||
_totalVertices += arguments[ 1 ];
|
|
||||||
} );
|
|
||||||
|
|
||||||
WebGLRenderingContext.prototype.useProgram = _h( WebGLRenderingContext.prototype.useProgram, function () {
|
|
||||||
_totalUseProgramCalls++;
|
|
||||||
} );
|
|
||||||
|
|
||||||
WebGLRenderingContext.prototype.bindTexture = _h( WebGLRenderingContext.prototype.bindTexture, function () {
|
|
||||||
_totalBindTexures++;
|
|
||||||
} );
|
|
||||||
|
|
||||||
var _values = {
|
|
||||||
allcalls: {
|
|
||||||
over: 3000,
|
|
||||||
caption: 'Calls (hook)'
|
|
||||||
},
|
|
||||||
drawelements: {
|
|
||||||
caption: 'drawElements (hook)'
|
|
||||||
},
|
|
||||||
drawarrays: {
|
|
||||||
caption: 'drawArrays (hook)'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var _groups = [ {
|
|
||||||
caption: 'WebGL',
|
|
||||||
values: [ 'allcalls', 'drawelements', 'drawarrays', 'useprogram', 'bindtexture', 'glfaces', 'glvertices', 'glpoints' ]
|
|
||||||
} ];
|
|
||||||
|
|
||||||
var _fractions = [ {
|
|
||||||
base: 'allcalls',
|
|
||||||
steps: [ 'drawelements', 'drawarrays' ]
|
|
||||||
} ];
|
|
||||||
|
|
||||||
function _update () {
|
|
||||||
_rS( 'allcalls' ).set( _totalDrawArraysCalls + _totalDrawElementsCalls );
|
|
||||||
_rS( 'drawElements' ).set( _totalDrawElementsCalls );
|
|
||||||
_rS( 'drawArrays' ).set( _totalDrawArraysCalls );
|
|
||||||
_rS( 'bindTexture' ).set( _totalBindTexures );
|
|
||||||
_rS( 'useProgram' ).set( _totalUseProgramCalls );
|
|
||||||
_rS( 'glfaces' ).set( _totalFaces );
|
|
||||||
_rS( 'glvertices' ).set( _totalVertices );
|
|
||||||
_rS( 'glpoints' ).set( _totalPoints );
|
|
||||||
}
|
|
||||||
|
|
||||||
function _start () {
|
|
||||||
_totalDrawArraysCalls = 0;
|
|
||||||
_totalDrawElementsCalls = 0;
|
|
||||||
_totalUseProgramCalls = 0;
|
|
||||||
_totalFaces = 0;
|
|
||||||
_totalVertices = 0;
|
|
||||||
_totalPoints = 0;
|
|
||||||
_totalBindTexures = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _end () {}
|
|
||||||
|
|
||||||
function _attach ( r ) {
|
|
||||||
_rS = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
update: _update,
|
|
||||||
start: _start,
|
|
||||||
end: _end,
|
|
||||||
attach: _attach,
|
|
||||||
values: _values,
|
|
||||||
groups: _groups,
|
|
||||||
fractions: _fractions
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
window.threeStats = function ( renderer ) {
|
|
||||||
|
|
||||||
var _rS = null;
|
|
||||||
|
|
||||||
var _values = {
|
|
||||||
'renderer.info.memory.geometries': {
|
|
||||||
caption: 'Geometries'
|
|
||||||
},
|
|
||||||
'renderer.info.memory.textures': {
|
|
||||||
caption: 'Textures'
|
|
||||||
},
|
|
||||||
'renderer.info.programs': {
|
|
||||||
caption: 'Programs'
|
|
||||||
},
|
|
||||||
'renderer.info.render.calls': {
|
|
||||||
caption: 'Calls'
|
|
||||||
},
|
|
||||||
'renderer.info.render.faces': {
|
|
||||||
caption: 'Faces',
|
|
||||||
over: 1000
|
|
||||||
},
|
|
||||||
'renderer.info.render.points': {
|
|
||||||
caption: 'Points'
|
|
||||||
},
|
|
||||||
'renderer.info.render.vertices': {
|
|
||||||
caption: 'Vertices'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var _groups = [ {
|
|
||||||
caption: 'Three.js - Memory',
|
|
||||||
values: [ 'renderer.info.memory.geometries', 'renderer.info.programs', 'renderer.info.memory.textures' ]
|
|
||||||
}, {
|
|
||||||
caption: 'Three.js - Render',
|
|
||||||
values: [ 'renderer.info.render.calls', 'renderer.info.render.faces', 'renderer.info.render.points', 'renderer.info.render.vertices' ]
|
|
||||||
} ];
|
|
||||||
|
|
||||||
var _fractions = [];
|
|
||||||
|
|
||||||
function _update () {
|
|
||||||
|
|
||||||
_rS( 'renderer.info.memory.geometries' ).set( renderer.info.memory.geometries );
|
|
||||||
//_rS( 'renderer.info.programs' ).set( renderer.info.programs.length );
|
|
||||||
_rS( 'renderer.info.memory.textures' ).set( renderer.info.memory.textures );
|
|
||||||
_rS( 'renderer.info.render.calls' ).set( renderer.info.render.calls );
|
|
||||||
_rS( 'renderer.info.render.faces' ).set( renderer.info.render.faces );
|
|
||||||
_rS( 'renderer.info.render.points' ).set( renderer.info.render.points );
|
|
||||||
_rS( 'renderer.info.render.vertices' ).set( renderer.info.render.vertices );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function _start () {}
|
|
||||||
|
|
||||||
function _end () {}
|
|
||||||
|
|
||||||
function _attach ( r ) {
|
|
||||||
_rS = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
update: _update,
|
|
||||||
start: _start,
|
|
||||||
end: _end,
|
|
||||||
attach: _attach,
|
|
||||||
values: _values,
|
|
||||||
groups: _groups,
|
|
||||||
fractions: _fractions
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* From https://github.com/paulirish/memory-stats.js
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.BrowserStats = function () {
|
|
||||||
|
|
||||||
var _rS = null;
|
|
||||||
|
|
||||||
var _usedJSHeapSize = 0,
|
|
||||||
_totalJSHeapSize = 0;
|
|
||||||
|
|
||||||
var memory = {
|
|
||||||
usedJSHeapSize: 0,
|
|
||||||
totalJSHeapSize: 0
|
|
||||||
};
|
|
||||||
|
|
||||||
if ( window.performance && performance.memory )
|
|
||||||
memory = performance.memory;
|
|
||||||
|
|
||||||
if ( memory.totalJSHeapSize === 0 ) {
|
|
||||||
console.warn( 'totalJSHeapSize === 0... performance.memory is only available in Chrome .' );
|
|
||||||
}
|
|
||||||
|
|
||||||
var _values = {
|
|
||||||
memory: {
|
|
||||||
caption: 'Used Memory',
|
|
||||||
average: true,
|
|
||||||
avgMs: 1000,
|
|
||||||
over: 22
|
|
||||||
},
|
|
||||||
total: {
|
|
||||||
caption: 'Total Memory'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var _groups = [ {
|
|
||||||
caption: 'Browser',
|
|
||||||
values: [ 'memory', 'total' ]
|
|
||||||
} ];
|
|
||||||
|
|
||||||
var _fractions = [ {
|
|
||||||
base: 'total',
|
|
||||||
steps: [ 'memory' ]
|
|
||||||
} ];
|
|
||||||
|
|
||||||
var log1024 = Math.log( 1024 );
|
|
||||||
|
|
||||||
function _size ( v ) {
|
|
||||||
|
|
||||||
var precision = 100; //Math.pow(10, 2);
|
|
||||||
var i = Math.floor( Math.log( v ) / log1024 );
|
|
||||||
if( v === 0 ) i = 1;
|
|
||||||
return Math.round( v * precision / Math.pow( 1024, i ) ) / precision; // + ' ' + sizes[i];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function _update () {
|
|
||||||
_usedJSHeapSize = _size( memory.usedJSHeapSize );
|
|
||||||
_totalJSHeapSize = _size( memory.totalJSHeapSize );
|
|
||||||
|
|
||||||
_rS( 'memory' ).set( _usedJSHeapSize );
|
|
||||||
_rS( 'total' ).set( _totalJSHeapSize );
|
|
||||||
}
|
|
||||||
|
|
||||||
function _start () {
|
|
||||||
_usedJSHeapSize = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _end () {}
|
|
||||||
|
|
||||||
function _attach ( r ) {
|
|
||||||
_rS = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
update: _update,
|
|
||||||
start: _start,
|
|
||||||
end: _end,
|
|
||||||
attach: _attach,
|
|
||||||
values: _values,
|
|
||||||
groups: _groups,
|
|
||||||
fractions: _fractions
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
if (typeof module === 'object') {
|
|
||||||
module.exports = {
|
|
||||||
glStats: window.glStats,
|
|
||||||
threeStats: window.threeStats,
|
|
||||||
BrowserStats: window.BrowserStats
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue