Skip to content

Instantly share code, notes, and snippets.

@stephenfeather
Forked from jeffbonnes/tracer.js
Created June 1, 2012 23:41
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stephenfeather/2855794 to your computer and use it in GitHub Desktop.
Save stephenfeather/2855794 to your computer and use it in GitHub Desktop.
A tracer object to Titanium Mobile to show elapsed time and memory usage
/**
* Courtesy of Jeff Bonnes
* http://www.titaniumdevelopment.com.au/blog/2011/09/12/debugging-ipad-performance-and-memory-usage/
*/
/**
* Modified to a commonJS format by Stephen Feather
* Usage:
* var Tracer = require('/lib/tracer');
* tracer = Tracer.createTracer('sqlite');
* tracer.info('Starting Database Run');
* tracer.info('Finished Database Run');
*/
exports.levels = {};
exports.levels.DEBUG = 1;
exports.levels.INFO = 2;
exports.levels.WARN = 3;
exports.levels.ERROR = 4;
exports.levels.OFF = 5;
exports.allTracers = [];
exports.createTracer = function(name) {
var t = {};
t.name = name;
t.startTimer = function(){
t.startTime = (new Date()).valueOf();
};
t.resetMemory = function(){
t.startMem = Ti.Platform.availableMemory;
};
t.startTimer();
t.resetMemory();
function makeMsg( msg ){
var dateTemp = new Date();
var elapsed = dateTemp.valueOf() - t.startTime;
var currMem = Ti.Platform.availableMemory;
var avilableMem = Math.round(currMem) + 'mb';
var deltaMem = Math.round(t.startMem - currMem) + 'mb';
return( t.name + "\t" + elapsed + "\t" + avilableMem + "\t" + deltaMem + "\t" + msg );
};
t.level = exports.levels.INFO;
t.setLevel = function(level) {
t.level = level;
};
t.debug = function(msg) {
if( t.level <= exports.levels.DEBUG ){
Ti.API.debug(makeMsg(msg));
}
};
t.info = function(msg) {
if( t.level <= exports.levels.INFO ){
Ti.API.info(makeMsg(msg));
}
};
t.warn = function(msg) {
if( t.level <= exports.levels.WARN ){
Ti.API.warn(makeMsg(msg));
}
};
t.error = function(msg) {
if( t.level <= exports.levels.ERROR ){
Ti.API.error(makeMsg(msg));
}
};
exports.allTracers.push(t);
return t;
};
exports.removeTracer = function( t ){
var id = exports.allTracers.indexOf( t );
if( id > -1 ){
exports.allTracers.splice( id , 1 );
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment