summaryrefslogtreecommitdiffstats
path: root/toolkit/components/perfmonitoring/nsPerformanceStats.h
diff options
context:
space:
mode:
authorDavid Teller <dteller@mozilla.com>2019-01-28 23:41:20 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-01-28 23:41:20 +0100
commit3476c1d60ec29c5497123194acd7a9310b1023d2 (patch)
tree4933db7b4bb27893d3511ac21d5d04a11deea6a9 /toolkit/components/perfmonitoring/nsPerformanceStats.h
parente82fdef9c7bed415d004086740cab57211575511 (diff)
downloadUXP-3476c1d60ec29c5497123194acd7a9310b1023d2.tar
UXP-3476c1d60ec29c5497123194acd7a9310b1023d2.tar.gz
UXP-3476c1d60ec29c5497123194acd7a9310b1023d2.tar.lz
UXP-3476c1d60ec29c5497123194acd7a9310b1023d2.tar.xz
UXP-3476c1d60ec29c5497123194acd7a9310b1023d2.zip
Reduce number of allocations in AutoStopwatch
This patch fixes two related issues. 1. The AutoStopwatch uses a stack-allocated `mozilla::Vector` to communicate with its callback during each compartment switch. This vector was designed to allow its contents to be stack-allocated but they turned out to be accidentally heap-allocated. 2. During each tick, the stopwatch fills a vector `recentGroups_`. This vector always started with minimal capacity and had to grow repeatedly as groups were added, causing repeated reallocations. This patch preallocates `recentGroups_` to have the same capacity as the previous tick. We expect that this should eventually reach a stable size that closely matches the actual needs of the process.
Diffstat (limited to 'toolkit/components/perfmonitoring/nsPerformanceStats.h')
-rw-r--r--toolkit/components/perfmonitoring/nsPerformanceStats.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.h b/toolkit/components/perfmonitoring/nsPerformanceStats.h
index 6902c840d..661a78a1a 100644
--- a/toolkit/components/perfmonitoring/nsPerformanceStats.h
+++ b/toolkit/components/perfmonitoring/nsPerformanceStats.h
@@ -19,7 +19,7 @@
class nsPerformanceGroup;
class nsPerformanceGroupDetails;
-typedef mozilla::Vector<RefPtr<nsPerformanceGroup>> GroupVector;
+typedef mozilla::Vector<RefPtr<nsPerformanceGroup>, 8> GroupVector;
/**
* A data structure for registering observers interested in