[patch, libstdc++] std::shuffle: Generate two swap positions at a time if possible
Eelis
eelis@eelis.net
Sun May 1 14:25:00 GMT 2016
Sorry, forgot to include the libstdc++ list.
On 2016-05-01 16:18, Eelis wrote:
> Hi,
>
> The attached patch optimizes std::shuffle for the very common case
> where the generator range is large enough that a single invocation
> can produce two swap positions.
>
> This reduces the runtime of the following testcase by 37% on my machine:
>
> int main()
> {
> std::mt19937 gen;
>
> std::vector<int> v;
> v.reserve(10000);
> for (int i = 0; i != 10000; ++i)
> {
> v.push_back(i);
> std::shuffle(v.begin(), v.end(), gen);
> }
>
> std::cout << v.front() << '\n';
> }
>
> Thoughts?
>
> Thanks,
>
> Eelis
>
More information about the Libstdc++
mailing list