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.