diff options
author | David Teller <dteller@mozilla.com> | 2019-01-28 23:41:20 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-01-28 23:41:20 +0100 |
commit | 3476c1d60ec29c5497123194acd7a9310b1023d2 (patch) | |
tree | 4933db7b4bb27893d3511ac21d5d04a11deea6a9 /toolkit/components/perfmonitoring/nsPerformanceStats.h | |
parent | e82fdef9c7bed415d004086740cab57211575511 (diff) | |
download | UXP-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.h | 2 |
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 |