[patch, libstdc++] std::shuffle: Generate two swap positions at a time if possible
Jonathan Wakely
jwakely.gcc@gmail.com
Tue May 3 12:39:00 GMT 2016
ENOPATCH
On 1 May 2016 at 15:21, Eelis <eelis@eelis.net> wrote:
> 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