¿Deben pasar distribuciones aleatorias por referencia o ser miembros de objetos en c ++
Suponiendo que solo instanciamos menos de 20 objetos de la clase Blob y con respecto a la eficiencia (ejecución de tiempo) y los problemas de administración de memoria, ¿hay una mejor opción entre:
Establecer el generador aleatorio y las distribuciones generadas como miembros de clase privada como:
class Blob {
private:
std::mt19937 engine;
std::uniform_real_distribution<double> R_distribution;
std::binomial_distribution<int> B_distribution;
}
y usarlos directamente en métodos Blob. Por lo tanto, cuando llamamos a una distribución, también modificamos el estado del motor que es miembro.
¿O establecer el generador aleatorio como miembros de una clase privada y pasar las distribuciones por referencia a los métodos? Por ejemplo:
class Blob {
private:
std::mt19937 engine; //engine
}
void Blob::run() {
int blabla = 10;
std::uniform_real_distribution<double> R_distribution(0, 10);
do_something(blabla, R_distribution);
...
}
Si bien el paso por referencia induce una sobrecarga menor en general, ¿importa en ese caso en particular? ¿Cómo se escala la pregunta general al llamar a las distribuciones una gran cantidad de veces (10 ^ 9 o más)?