From 7895dde165b0586eea324b4c9e07f8f0a2b7e1ba Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 25 Aug 2016 09:33:57 +0200 Subject: [PATCH] Save another ~1% on the audio benchmark, by dealing with the std::deque more efficiently. (Still some potential here.) --- resampling_queue.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/resampling_queue.cpp b/resampling_queue.cpp index 88b711e..b7f898d 100644 --- a/resampling_queue.cpp +++ b/resampling_queue.cpp @@ -56,9 +56,7 @@ void ResamplingQueue::add_input_samples(double pts, const float *samples, ssize_ k_a0 = k_a1; k_a1 += num_samples; - for (ssize_t i = 0; i < num_samples * num_channels; ++i) { - buffer.push_back(samples[i]); - } + buffer.insert(buffer.end(), samples, samples + num_samples * num_channels); } bool ResamplingQueue::get_output_samples(double pts, float *samples, ssize_t num_samples, ResamplingQueue::RateAdjustmentPolicy rate_adjustment_policy) @@ -146,9 +144,7 @@ bool ResamplingQueue::get_output_samples(double pts, float *samples, ssize_t num if (num_input_samples * num_channels > buffer.size()) { num_input_samples = buffer.size() / num_channels; } - for (size_t i = 0; i < num_input_samples * num_channels; ++i) { - inbuf[i] = buffer[i]; - } + copy(buffer.begin(), buffer.begin() + num_input_samples * num_channels, inbuf); vresampler.inp_count = num_input_samples; vresampler.inp_data = inbuf; -- 2.39.2