Commit 2a7d2ffc by Torkel Ödegaard

Merge branch 'profiling_in_dev' of https://github.com/mtanda/grafana into mtanda-profiling_in_dev

parents 67ad9035 83c76981
...@@ -17,7 +17,7 @@ export class GrafanaCtrl { ...@@ -17,7 +17,7 @@ export class GrafanaCtrl {
$scope._ = _; $scope._ = _;
$rootScope.profilingEnabled = store.getBool('profilingEnabled'); $rootScope.profilingEnabled = store.getBool('profilingEnabled') || config.buildInfo.env === 'development';
$rootScope.performance = { loadStart: new Date().getTime() }; $rootScope.performance = { loadStart: new Date().getTime() };
$rootScope.appSubUrl = config.appSubUrl; $rootScope.appSubUrl = config.appSubUrl;
......
...@@ -60,6 +60,14 @@ function (angular, $, config, moment) { ...@@ -60,6 +60,14 @@ function (angular, $, config, moment) {
$scope.updateSubmenuVisibility(); $scope.updateSubmenuVisibility();
$scope.setWindowTitleAndTheme(); $scope.setWindowTitleAndTheme();
if ($scope.profilingEnabled) {
$scope.performance.panels = [];
$scope.performance.panelCount = 0;
$scope.dashboard.rows.forEach(function(row) {
$scope.performance.panelCount += row.panels.length;
});
}
$scope.appEvent("dashboard-loaded", $scope.dashboard); $scope.appEvent("dashboard-loaded", $scope.dashboard);
}).catch(function(err) { }).catch(function(err) {
if (err.data && err.data.message) { err.message = err.data.message; } if (err.data && err.data.message) { err.message = err.data.message; }
......
...@@ -51,6 +51,13 @@ function (angular, _, $) { ...@@ -51,6 +51,13 @@ function (angular, _, $) {
$scope.onAppEvent('panel-initialized', function(evt, payload) { $scope.onAppEvent('panel-initialized', function(evt, payload) {
self.registerPanel(payload.scope); self.registerPanel(payload.scope);
if ($scope.profilingEnabled) {
$scope.performance.panelsInitialized++;
if ($scope.performance.panelsInitialized === $scope.performance.panelCount) {
$scope.performance.allPanelsInitialized = new Date().getTime();
}
}
}); });
this.update(this.getQueryStringState()); this.update(this.getQueryStringState());
......
...@@ -95,7 +95,6 @@ class MetricsPanelCtrl extends PanelCtrl { ...@@ -95,7 +95,6 @@ class MetricsPanelCtrl extends PanelCtrl {
} }
setTimeQueryStart() { setTimeQueryStart() {
this.timing = {};
this.timing.queryStart = new Date().getTime(); this.timing.queryStart = new Date().getTime();
} }
......
...@@ -31,6 +31,7 @@ export class PanelCtrl { ...@@ -31,6 +31,7 @@ export class PanelCtrl {
height: any; height: any;
containerHeight: any; containerHeight: any;
events: Emitter; events: Emitter;
timing: any;
constructor($scope, $injector) { constructor($scope, $injector) {
this.$injector = $injector; this.$injector = $injector;
...@@ -38,6 +39,7 @@ export class PanelCtrl { ...@@ -38,6 +39,7 @@ export class PanelCtrl {
this.$timeout = $injector.get('$timeout'); this.$timeout = $injector.get('$timeout');
this.editorTabIndex = 0; this.editorTabIndex = 0;
this.events = new Emitter(); this.events = new Emitter();
this.timing = {};
var plugin = config.panels[this.panel.type]; var plugin = config.panels[this.panel.type];
if (plugin) { if (plugin) {
...@@ -58,6 +60,20 @@ export class PanelCtrl { ...@@ -58,6 +60,20 @@ export class PanelCtrl {
renderingCompleted() { renderingCompleted() {
this.$scope.$root.performance.panelsRendered++; this.$scope.$root.performance.panelsRendered++;
this.timing.renderEnd = new Date().getTime();
if (this.$scope.$root.profilingEnabled) {
this.$scope.$root.performance.panels.push({
panelId: this.panel.id,
query: this.timing.queryEnd - this.timing.queryStart,
render: this.timing.renderEnd - this.timing.renderStart,
});
if (this.$scope.$root.performance.panelsRendered === this.$scope.$root.performance.panelCount) {
this.$scope.$root.performance.allPanelsRendered = new Date().getTime();
var timeTaken = this.$scope.$root.performance.allPanelsRendered - this.$scope.$root.performance.dashboardLoadStart;
console.log("Dashboard::Performance - All panels rendered in " + timeTaken + " ms");
}
}
} }
refresh() { refresh() {
...@@ -169,6 +185,7 @@ export class PanelCtrl { ...@@ -169,6 +185,7 @@ export class PanelCtrl {
} }
this.calculatePanelHeight(); this.calculatePanelHeight();
this.timing.renderStart = new Date().getTime();
this.events.emit('render', payload); this.events.emit('render', payload);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment