| Index: tools/tickprocessor.js
|
| diff --git a/tools/tickprocessor.js b/tools/tickprocessor.js
|
| index d8575738553aa93f46116489312232d31acf8cf5..600d2eeb7b79dc3bcee56f183e0ec3c2347e83f6 100644
|
| --- a/tools/tickprocessor.js
|
| +++ b/tools/tickprocessor.js
|
| @@ -156,7 +156,8 @@ function TickProcessor(
|
| range,
|
| sourceMap,
|
| timedRange,
|
| - pairwiseTimedRange) {
|
| + pairwiseTimedRange,
|
| + onlySummary) {
|
| LogReader.call(this, {
|
| 'shared-library': { parsers: [null, parseInt, parseInt],
|
| processor: this.processSharedLibrary },
|
| @@ -247,6 +248,7 @@ function TickProcessor(
|
|
|
| this.generation_ = 1;
|
| this.currentProducerProfile_ = null;
|
| + this.onlySummary_ = onlySummary;
|
| };
|
| inherits(TickProcessor, LogReader);
|
|
|
| @@ -456,29 +458,30 @@ TickProcessor.prototype.printStatistics = function() {
|
| if (this.ignoreUnknown_) {
|
| totalTicks -= this.ticks_.unaccounted;
|
| }
|
| + var printAllTicks = !this.onlySummary_;
|
|
|
| // Count library ticks
|
| var flatViewNodes = flatView.head.children;
|
| var self = this;
|
|
|
| var libraryTicks = 0;
|
| - this.printHeader('Shared libraries');
|
| + if(printAllTicks) this.printHeader('Shared libraries');
|
| this.printEntries(flatViewNodes, totalTicks, null,
|
| function(name) { return self.isSharedLibrary(name); },
|
| - function(rec) { libraryTicks += rec.selfTime; });
|
| + function(rec) { libraryTicks += rec.selfTime; }, printAllTicks);
|
| var nonLibraryTicks = totalTicks - libraryTicks;
|
|
|
| var jsTicks = 0;
|
| - this.printHeader('JavaScript');
|
| + if(printAllTicks) this.printHeader('JavaScript');
|
| this.printEntries(flatViewNodes, totalTicks, nonLibraryTicks,
|
| function(name) { return self.isJsCode(name); },
|
| - function(rec) { jsTicks += rec.selfTime; });
|
| + function(rec) { jsTicks += rec.selfTime; }, printAllTicks);
|
|
|
| var cppTicks = 0;
|
| - this.printHeader('C++');
|
| + if(printAllTicks) this.printHeader('C++');
|
| this.printEntries(flatViewNodes, totalTicks, nonLibraryTicks,
|
| function(name) { return self.isCppCode(name); },
|
| - function(rec) { cppTicks += rec.selfTime; });
|
| + function(rec) { cppTicks += rec.selfTime; }, printAllTicks);
|
|
|
| this.printHeader('Summary');
|
| this.printLine('JavaScript', jsTicks, totalTicks, nonLibraryTicks);
|
| @@ -490,25 +493,27 @@ TickProcessor.prototype.printStatistics = function() {
|
| this.ticks_.total, null);
|
| }
|
|
|
| - print('\n [C++ entry points]:');
|
| - print(' ticks cpp total name');
|
| - var c_entry_functions = this.profile_.getCEntryProfile();
|
| - var total_c_entry = c_entry_functions[0].ticks;
|
| - for (var i = 1; i < c_entry_functions.length; i++) {
|
| - c = c_entry_functions[i];
|
| - this.printLine(c.name, c.ticks, total_c_entry, totalTicks);
|
| - }
|
| + if(printAllTicks) {
|
| + print('\n [C++ entry points]:');
|
| + print(' ticks cpp total name');
|
| + var c_entry_functions = this.profile_.getCEntryProfile();
|
| + var total_c_entry = c_entry_functions[0].ticks;
|
| + for (var i = 1; i < c_entry_functions.length; i++) {
|
| + c = c_entry_functions[i];
|
| + this.printLine(c.name, c.ticks, total_c_entry, totalTicks);
|
| + }
|
|
|
| - this.printHeavyProfHeader();
|
| - var heavyProfile = this.profile_.getBottomUpProfile();
|
| - var heavyView = this.viewBuilder_.buildView(heavyProfile);
|
| - // To show the same percentages as in the flat profile.
|
| - heavyView.head.totalTime = totalTicks;
|
| - // Sort by total time, desc, then by name, desc.
|
| - heavyView.sort(function(rec1, rec2) {
|
| - return rec2.totalTime - rec1.totalTime ||
|
| - (rec2.internalFuncName < rec1.internalFuncName ? -1 : 1); });
|
| - this.printHeavyProfile(heavyView.head.children);
|
| + this.printHeavyProfHeader();
|
| + var heavyProfile = this.profile_.getBottomUpProfile();
|
| + var heavyView = this.viewBuilder_.buildView(heavyProfile);
|
| + // To show the same percentages as in the flat profile.
|
| + heavyView.head.totalTime = totalTicks;
|
| + // Sort by total time, desc, then by name, desc.
|
| + heavyView.sort(function(rec1, rec2) {
|
| + return rec2.totalTime - rec1.totalTime ||
|
| + (rec2.internalFuncName < rec1.internalFuncName ? -1 : 1); });
|
| + this.printHeavyProfile(heavyView.head.children);
|
| + }
|
| };
|
|
|
|
|
| @@ -600,13 +605,15 @@ TickProcessor.prototype.formatFunctionName = function(funcName) {
|
| };
|
|
|
| TickProcessor.prototype.printEntries = function(
|
| - profile, totalTicks, nonLibTicks, filterP, callback) {
|
| + profile, totalTicks, nonLibTicks, filterP, callback, printAllTicks) {
|
| var that = this;
|
| this.processProfile(profile, filterP, function (rec) {
|
| if (rec.selfTime == 0) return;
|
| callback(rec);
|
| var funcName = that.formatFunctionName(rec.internalFuncName);
|
| - that.printLine(funcName, rec.selfTime, totalTicks, nonLibTicks);
|
| + if(printAllTicks) {
|
| + that.printLine(funcName, rec.selfTime, totalTicks, nonLibTicks);
|
| + }
|
| });
|
| };
|
|
|
| @@ -884,7 +891,9 @@ function ArgumentsProcessor(args) {
|
| '--timed-range': ['timedRange', true,
|
| 'Ignore ticks before first and after last Date.now() call'],
|
| '--pairwise-timed-range': ['pairwiseTimedRange', true,
|
| - 'Ignore ticks outside pairs of Date.now() calls']
|
| + 'Ignore ticks outside pairs of Date.now() calls'],
|
| + '--only-summary': ['onlySummary', true,
|
| + 'Print only tick summary, exclude other information']
|
| };
|
| this.argsDispatch_['--js'] = this.argsDispatch_['-j'];
|
| this.argsDispatch_['--gc'] = this.argsDispatch_['-g'];
|
| @@ -908,7 +917,8 @@ ArgumentsProcessor.DEFAULTS = {
|
| range: 'auto,auto',
|
| distortion: 0,
|
| timedRange: false,
|
| - pairwiseTimedRange: false
|
| + pairwiseTimedRange: false,
|
| + onlySummary: false
|
| };
|
|
|
|
|
|
|