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