mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Change CallbackDeferrer to pre-reserve the deferred vector.
The push_back pattern results in frequent vector growth which has performance overhead. This is .5% of our server's CPU Bug: webrtc:15723 Change-Id: Ic151c81a4b49a7d48a354b75f62694bc6f9a1ee4 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331440 Reviewed-by: Victor Boivie <boivie@webrtc.org> Commit-Queue: Daniel Collins <dpcollins@google.com> Cr-Commit-Position: refs/heads/main@{#41388}
This commit is contained in:
parent
3ba809d6a6
commit
d093d0db7f
1 changed files with 7 additions and 3 deletions
|
@ -23,10 +23,14 @@ void CallbackDeferrer::TriggerDeferred() {
|
|||
// callback, and that might result in adding new callbacks to this instance,
|
||||
// and the vector can't be modified while iterated on.
|
||||
RTC_DCHECK(prepared_);
|
||||
std::vector<std::pair<Callback, CallbackData>> deferred;
|
||||
deferred.swap(deferred_);
|
||||
prepared_ = false;
|
||||
|
||||
if (deferred_.empty()) {
|
||||
return;
|
||||
}
|
||||
std::vector<std::pair<Callback, CallbackData>> deferred;
|
||||
// Reserve a small buffer to prevent too much reallocation on growth.
|
||||
deferred.reserve(8);
|
||||
deferred.swap(deferred_);
|
||||
for (auto& [cb, data] : deferred) {
|
||||
cb(std::move(data), underlying_);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue