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