Ah, thanks, I forgot to re-attach when I sent to include the libstdc++ list. On 2016-05-03 14:38, Jonathan Wakely wrote: > ENOPATCH > > On 1 May 2016 at 15:21, Eelis 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 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 >>> >> >>