Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]
Daniel Serpell
dserpell en gmail.com
Dom Dic 2 14:01:30 CLST 2007
Hola!
El Fri, Nov 30, 2007 at 07:41:10PM -0300, Alvaro Herrera escribio:
> Daniel Serpell escribió:
>
> > Un ejemplo, en C++ actual:
> >
> > // Define caso X^N arbitrario
> > template <int X, int N> class pow {
> > public: static int value(){ return pow<X,N-1>::value() * X; } };
> >
> > // Define caso X^1
> > template <int X> class pow<X,1> {
> > public: static int value(){ return X;} };
> >
> > Eso define una función "pow", que luego se utiliza así:
> >
> > k = pow<10,7>::value();
> >
> > La gracia es que se le explica al compilador cómo realizar el cálculo,
> > el que se realiza en tiempo de compilación y no de ejecución.
>
> Huh, no entiendo. Que pasa si obtienes N desde el usuario? Obviamente
> no puedes hacerlo en tiempo de compilacion ...
No, no puedes, y el compilador indicará un error. Es esa una de las
limitaciones extrañas que hacen difícil C++ :-), el compilador debe
demostrar en tiempo de compilación que N es constante.
Claro, para los que defienden esto, indican que es mejor ya que el
programador sabe si el código va a ser óptimo o no.
Daniel.
Más información sobre la lista de distribución Linux