http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55169
Bug #: 55169 Summary: std::discrete_distribution::operator(generator&) makes unnecessary copy of parameter vector Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: chri.sn...@gmail.com Created attachment 28592 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28592 demonstration of slow std::discrete_distribution in GCC std::discrete_distribution::operator()(generator&) is significantly slower than directly calling operator()(generator&, const param_type&), which it delegates to. This is because, on random.h:4805, this->param() returns a copy rather than a const reference. The attached file is a simple test demonstrating this inefficient behaviour.