diff options
Diffstat (limited to 'mailnews/db/gloda/modules/indexer.js')
-rw-r--r-- | mailnews/db/gloda/modules/indexer.js | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mailnews/db/gloda/modules/indexer.js b/mailnews/db/gloda/modules/indexer.js index e75b6796b9..f6c9395306 100644 --- a/mailnews/db/gloda/modules/indexer.js +++ b/mailnews/db/gloda/modules/indexer.js @@ -1006,6 +1006,10 @@ var GlodaIndexer = { // make ourselves less responsive by drawing out the period of time we // are dominating the main thread. this._perfIndexStopwatch.start(); + // For telemetry purposes, we want to know how many messages we've been + // processing during that batch, and how long it took, pauses included. + let t0 = Date.now(); + this._indexedMessageCount = 0; batchCount = 0; while (batchCount < this._indexTokens) { if ((this._callbackHandle.activeIterator === null) && @@ -1146,6 +1150,21 @@ var GlodaIndexer = { } } + // All pauses have been taken, how effective were we? Report! + // XXX: there's possibly a lot of fluctuation since we go through here + // every 5 messages or even less + if (this._indexedMessageCount > 0) { + let delta = (Date.now() - t0)/1000; // in seconds + let v = Math.round(this._indexedMessageCount/delta); + try { + let h = Services.telemetry + .getHistogramById("THUNDERBIRD_INDEXING_RATE_MSG_PER_S"); + h.add(v); + } catch (e) { + this._log.warn("Couldn't report telemetry", e, v); + } + } + if (batchCount > 0) { let totalTime = this._perfIndexStopwatch.realTimeSeconds * 1000; let timePerToken = totalTime / batchCount; |