Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/02/2008, 14:23
Avatar de m4xp0wer
m4xp0wer
 
Fecha de Ingreso: septiembre-2007
Mensajes: 66
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Por referencia es mas rápido?

He estado haciendo algunas pruebas. Mira esto:
Paso por valor:
Código:
#include<stdio.h>

int suma(int a,int b)
{
  return a+b;
}

int main()
{
  int j,i,a,b;
  a=10;
  b=30;
  for(i=0;i<30000000;i++)
    {
      j = suma(a,b);
    }
  return;
}
Paso por referencia:
Código:
#include<stdio.h>
int suma(int *a, int *b)
{
  return (*a)+(*b);
}
int main()
{
  int j,i,a,b;
  a=10;
  b=30;
  for(i=0;i<30000000;i++)
    {
      j=suma(&a,&b);
    }
  return;
}
El tiempo que tarda el segundo programa en ejecutarse es ligeramente superior al del primero

Código:
 time ./prueba1

real    0m0.185s
user    0m0.160s
sys     0m0.004s
Código:
 time ./prueba2

real    0m0.237s
user    0m0.220s
sys     0m0.000s
Esto se debe a que la indirección requiere una operación a mayores, mientras que el contenido que se introduce en la pila es del mismo tamaño en los dos casos (el tamaño de un puntero es el mismo que un int, 4 octetos)