Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 25-may-2005, 13:48   #1 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Código eficiente

Cita:
Iniciado por reel
Me vas disculpar MaxExtrem todo hiba bien, hasta que dijistes un línea de código contra 3.

Me parece que te equivocas, porque al compilar eso a un exe o lo que sea, se debe trasformar (proceso de compilar) en lenguaje máquina. Se de transformar cada una las condicones que has puesto a lenguaje máquina, y en lenguaje de máquina podrían ser una mas instruciones para procesador. Así que no puedes decir que esa línea de código representa una sola instrucción en el procesador.

Así que un programa, independiende del lenguaje, sera eficiente siempre y cuando haga buen uso de nuestro gran amigo el CPU.

Saludes
Él estaba hablando de número de líneas (que además era 6 contra 1). Y si hablamos de rendimiento, no tiene nada que ver:
C++ compila a lenguaje máquina, VB lo hace "semi"
C++ tiene un rendimiento mayor a VB en mucho sea el código que sea...
Los compiladores saben perfectamente cómo compilar un bucle de ése tipo de la mejor manera posible. En cambio, lo que hace ese bucle de VB es menos ortodoxo y habría que ver qué código quedaba... En cualquier caso hay más posibilidades de que lo compile bien porque el for es un bucle natural, no la que se monta en VB para hacer algo un poco más difícil.

Y no, no me equivoco, sé perfectamente que una línea no equivale a una instrucción de ASM... (que he programado en ASM...). Y si no díselo a los programas de C que ocupan eso, 1 línea... Aquí tienes un ejemplo, ofuscado con el preprocesador incluido (retorcido para que no se lea bien):

Código:
#define D define
#D Y return
#D R for
#D e while
#D I printf
#D l int
#D W if
#D C y=v+111;H(x,v)*y++= *x
#D H(a,b)R(a=b+11;a<b+89;a++)
#D s(a)t=scanf("%d",&a)
#D U Z I
#D Z I("123\
45678\n");H(x,V){putchar(".XO"[*x]);W((x-V)%10==8){x+=2;I("%d\n",(x-V)/10-1);}}
l V[1600],u,r[]={-1,-11,-10,-9,1,11,10,9},h[]={11,18,81,88},ih[]={22,27,72,77},
bz,lv=60,*x,*y,m,t;S(d,v,f,_,a,b)l*v;{l c=0,*n=v+100,j=d<u-1?a:-9000,w,z,i,g,q=
3-f;W(d>u){R(w=i=0;i<4;i++)w+=(m=v[h[i]])==f?300:m==q?-300:(t=v[ih[i]])==f?-50:
t==q?50:0;Y w;}H(z,0){W(E(v,z,f,100)){c++;w= -S(d+1,n,q,0,-b,-j);W(w>j){g=bz=z;
j=w;W(w>=b||w>=8003)Y w;}}}W(!c){g=0;W(_){H(x,v)c+= *x==f?1:*x==3-f?-1:0;Y c>0?
8000+c:c-8000;}C;j= -S(d+1,n,q,1,-b,-j);}bz=g;Y d>=u-1?j+(c<<3):j;}main(){R(;t<
1600;t+=100)R(m=0;m<100;m++)V[t+m]=m<11||m>88||(m+1)%10<2?3:0;I("Level:");V[44]
=V[55]=1;V[45]=V[54]=2;s(u);e(lv>0){Z do{I("You:");s(m);}e(!E(V,m,2,0)&&m!=99);
W(m!=99)lv--;W(lv<15&&u<10)u+=2;U("Wait\n");I("Value:%d\n",S(0,V,1,0,-9000,9000
));I("move: %d\n",(lv-=E(V,bz,1,0),bz));}}E(v,z,f,o)l*v;{l*j,q=3-f,g=0,i,w,*k=v
+z;W(*k==0)R(i=7;i>=0;i--){j=k+(w=r[i]);e(*j==q)j+=w;W(*j==f&&j-w!=k){W(!g){g=1
;C;}e(j!=k)*((j-=w)+o)=f;}}Y g;}
Eso es el juego del Othello en C

Si quieres realmente velocidad, en C++ declaro las variables "i" y "j" como "register", que le indican al compilador como sugerencia que las almacene en un registro...
MaxExtreme está desconectado   Responder Citando
Antiguo 25-may-2005, 14:13   #2 (permalink)
reel está en el buen camino
 
Avatar de reel
 
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 481
Código:
for(int i=0, int j=999, bool a=false ; a==false && i<=j ; i+=2, j/=2)
{
// Aquí podemos incluir nuestro código de verdad
// sin molestar al resto
}
[/html]

Ahora este?

Código:
int i,j;
bool a;

j = 999;

a = false;

for(i=0;a==false && i<=j;i+=2,j/=2);
Lo único que puedo decir que ma perere demasiada ligereza medir la calidad de un programa por sus líneas de código.

Sin duda tienens razón el compilador de Visual Basic no es muy bueno que se diga, sin duda las aplicaciones compiladas en C (icluyendo todos sus sabores) son mejores.

Lo que no me parecio fue la comparación de la lineas de código, un buen programador no se fija eso núnca.

Espero que estés de acuerdo conmigo.

Saludes
__________________
Leer es Saber, REEL.

Última edición por reel; 26-may-2005 a las 09:27. Razón: por respecto a C.
reel está desconectado   Responder Citando
Antiguo 25-may-2005, 14:38   #3 (permalink)
Eternal Idol está en el buen camino
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.090
La comparacion esa es muy logica, se compara la potencia y versatilidad, la simplicidad para realizar una tarea. No la calidad de un programa que obviamente no va a ocupar un par de lineas.
Eternal Idol está desconectado   Responder Citando
Antiguo 25-may-2005, 14:41   #4 (permalink)
Colaborador
GeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy pronto
 
Avatar de GeoAvila
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 3.842
Enviar un mensaje por MSN a GeoAvila Enviar un mensaje por Yahoo  a GeoAvila Enviar un mensaje por Skype™ a GeoAvila
Calquiera diría que no es VB, (jeje)
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com
GeoAvila está desconectado   Responder Citando
Antiguo 25-may-2005, 16:00   #5 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Cita:
Iniciado por reel
Código:
int i,j;

j = 999;

bool a;

bool = false;

for(i=0;a==false && i<=j;i+=2,j/2);
Ese código es incorrecto... Aparte de que se hace todo en el bucle para dar independencia de las variables declaradas en él mismo.

Debería ser así:

Código:
int i,j;
bool a;
for(i=0,j=999,a=false;a==false&&i<=j;i+=2,j/=2){/* ... */ }
Pero no estábamos diciendo que un programa sea mejor por las líneas de código...

Estábamos diciendo la capacidad de expresarse en un determinado lenguaje. En VB no te puedes expresar con total capacidad.
MaxExtreme está desconectado   Responder Citando
Antiguo 26-may-2005, 08:34   #6 (permalink)
reel está en el buen camino
 
Avatar de reel
 
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 481
MaxExtreme

Si es ese código es incorrecto, pues te lo dices a ti mismo porque lo tome de tu ejemplo.

Ahora, toda en la vida es ralativo ... hasta la verdad, tu eres una persona muy cerrada y te cuesta dar la mano a tus semejantes ... bueno eso me parece ...

Etonces ... si tu lo dices así es.

Saludes
__________________
Leer es Saber, REEL.
reel está desconectado   Responder Citando
Antiguo 26-may-2005, 08:57   #7 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Cita:
Iniciado por reel
MaxExtreme

Si es ese código es incorrecto, pues te lo dices a ti mismo porque lo tome de tu ejemplo.

Ahora, toda en la vida es ralativo ... hasta la verdad, tu eres una persona muy cerrada y te cuesta dar la mano a tus semejantes ... bueno eso me parece ...

Etonces ... si tu lo dices así es.

Saludes
No querido...

A "correcto" me refería a bien escrito, y no, por ejemplo: te has comido el "=" de "j/=2", pones "bool = false", inicializas la "j" fuera e "i" dentro, la "a" no la inicializas...

Además que ese código no dice nada nuevo a lo que había escrito...

Me cuesta dar la mano a semejantes que me sueltan "Si es ese código es incorrecto, pues te lo dices a ti mismo porque lo tome de tu ejemplo." y se quedan tan anchos." cuando en realidad su código ni es el mío y está clarísimamente mal.
MaxExtreme está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 05:15.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93