Re: Benchmarking en distintos lenguajes [ Era algo así como cliente en jabber... ]

Horst H. von Brand vonbrand en inf.utfsm.cl
Mar Nov 27 18:04:04 CLST 2007


Rodrigo Javier Tobar Carrizo <rtobar en alumnos.inf.utfsm.cl> wrote:
> Rodrigo Fuentealba wrote:
> >>
> >> Es decir:
> >>
> >> for(i=0; i<N; i++) a[i] = b[i] + c[i];
> >>
> >> es muchisimo mas rapido que
> >>
> >> for(i=0; i<N; i++) a[i] = sum(b[i], c[i]);

> > Depende.
> > Si en C haces algo así:
> > #include <stdio.h>
> > #define SUM(A,B)        A + B
> > int main(void)
> > {
> >         int x = 5, y = 10, z;
> >         z = SUM(x,y);
> >         printf("%i\n", z);
> >         return 0;
> > }
> > El preprocesador de C reemplaza la operatoria en tiempo de
> > compilación, y permite hacer cosas como esa sin pérdida de ciclos en
> > tiempo de ejecución.

> No es tan asi... la cosa se hace en dos pasos separados (que uno puede
> hacer manualmente):

Ni tan claro tampoco... si sum() lo definiste antes en el mismo archivo, un
compilador C astuto simplemente reemplazara la llamada por codigo en
linea. Y hay implementaciones que toman el codigo objeto resultante de
compilar las distintas partes del programa, y efectuan el equivalente moral
de lo anterior sobre ello (!).

[Si, GCC actual es astuto. No, a binutils le falta un buen resto...]
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513


Más información sobre la lista de distribución Linux