12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- function Profiler() {
- this._times = {};
- return this;
- };
-
- Profiler.prototype.start = function(key) {
- this.end(this._current);
- this._current = key;
- this._times[this._current] = { start: Date.now() };
- return this;
- };
-
- Profiler.prototype.size = function(size) {
- if (!arguments.length) return this._size;
- this._size = size;
- return this;
- };
-
- Profiler.prototype.end = function(key) {
- if (key in this._times) this._times[key].end = Date.now();
- return this;
- };
-
- Profiler.prototype.print = function(size) {
- var rows = [],
- row;
-
- this.end(this._current);
-
- for (var key in this._times) {
- row = { key: key, time: this._times[key].end - this._times[key].start };
- if (this._size) row.per = row.time / this._size;
- rows.push(row);
- }
-
- return rows.map(function(row){
- return row.key + ": " + Math.round(row.time) + "ms total" + (row.per ? ", " + Math.round(row.per) + "ms per" : "");
- }).join("\n");
-
- };
-
- module.exports = Profiler;
|