Foros del Web » Programando para Internet » ASP Clásico »

se puede optimizar un case: ??

Estas en el tema de se puede optimizar un case: ?? en el foro de ASP Clásico en Foros del Web. tengo un Case el tema es que justo los primeros casos son los menos problables que ocurrar, mi pregunta es si poniendo los casos mas ...
  #1 (permalink)  
Antiguo 10/04/2007, 05:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 316
Antigüedad: 17 años, 10 meses
Puntos: 0
Pregunta se puede optimizar un case: ??

tengo un Case

el tema es que justo los primeros casos son los menos problables que ocurrar,
mi pregunta es si poniendo los casos mas frecuentes como las promeras ocurrencias, estoy optimizando el codigo, o simplemnte da igual.
  #2 (permalink)  
Antiguo 10/04/2007, 11:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: se puede optimizar un case: ??

Supongo que sí lo optimizas, pues se cumple la condición, ejecuta y sale del case, tendríamos que echar un buen ojo a como funciona exactamente VBScript en estos casos, pero a primera instancia a mi se me hace que si lo optimizas.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 10/04/2007, 15:32
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: se puede optimizar un case: ??

Pues la referencia no dice mucho, pero si hacemos una prueba:

Código:
<%
numero = 5
 Select Case numero
Case 1, 5
response.write "El número es 1 or 5"
Case 2
response.write "El número es 2"
Case 3
response.write "El número es 3"
Case 4
response.write "El número es 4"
Case 5
response.write "El número es 5"
End Select 
%>
vemos que lo que dice u_g, ahora si que para variar, ...... es cierto
  #4 (permalink)  
Antiguo 12/04/2007, 02:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 316
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: se puede optimizar un case: ??

esq o yo lo mido mal o a mi me da el mismo tiempo de ejecucion

si se toma el primer valor del case
o se recorraran, pongamos 10000 comparaciones.
  #5 (permalink)  
Antiguo 12/04/2007, 08:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: se puede optimizar un case: ??

¿Cómo lo estás midiendo?
La verdad es algo que no he hecho, pero a mi me suena lógico que ejecute el código de la condición en cuestión y salga del case, pero bueno, si lo estás haciendo con cronómetro en mano a lo mejor ni se nota al ojo humano. Por eso sería interesante saber como lo mides.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 12/04/2007, 08:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: se puede optimizar un case: ??

Medir el tiempo de ejecución es fácil:

Código:
tiempoinicio = Timer
For i = 1 To 800000
  el CASE con un método que genere números aleatorios donde salgan con más frecuencia los primeros y colocándolos al final del CASE (y luego cambiar esto)
Next
tiempototal = FormatNumber(Timer - tiempoinicio, 3, True)
Response.Write "Tiempo total: " & tiempototal & "<br>"
Pero no creo que sea algo en lo que tenga que perder tiempo -en optimizar un CASE- cuando puedo realmente optimizar en las BD's, creaciones de objetos Commands, etc, etc.
  #7 (permalink)  
Antiguo 12/04/2007, 11:36
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: se puede optimizar un case: ??

Cita:
Iniciado por u_goldman Ver Mensaje
¿Cómo lo estás midiendo?
La verdad es algo que no he hecho, pero a mi me suena lógico que ejecute el código de la condición en cuestión y salga del case, pero bueno, si lo estás haciendo con cronómetro en mano a lo mejor ni se nota al ojo humano. Por eso sería interesante saber como lo mides.


Saludos

Hola a todos , la otra vez, cuando se publicó este post, hice casi la misma prueba que Mykire y di por hecho que lo que le suena lógico a u_g era la realidad (a mi me suena lógico que ejecute el código de la condición en cuestión y salga del case).

Luego hice una prueba con un timer (como Myakire recomienda) haciendo un case entre sólo 1000 opciones... algo así (con el timer incorporado):

Código:
<%
'numero = 1
numero = 1000
Select Case numero
Case 1
response.write "El numero es 1"
Case 2
response.write "El número es 2"
Case ....
response.write "El número es ...."
Case 1000
response.write "El número es 1000"
End Select 
%>
Tanto para la variable numero con valor 1 o 1000, los resultados fueron los mismos. Tal vez 1000 sea un número relativamente bajo como para impactar en el rendimiento de un case... pero... ¿realmente cuándo tenés, en la práctica, un case de 1000 opciones distintas?

Saludos

PD: En un rato intento con un case de 10.000 opciones y comento los resultados
__________________
...___...
  #8 (permalink)  
Antiguo 12/04/2007, 12:11
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: se puede optimizar un case: ??

Ejecuté este script:

Código:
<%
response.write "numero = 1" & "<br>"
response.write "tiempoinicio = Timer" & "<br>"

response.write "select case numero" & "<br>"
for i = 0 to 10000
response.write "case " & i & "<br>"
response.write "resultado = ""es el número " & i & """" & "<br>"
next
response.write "end select" & "<br>"

response.write "tiempototal = FormatNumber(Timer - tiempoinicio, 3, True)" & "<br>"
response.write "Response.Write ""Tiempo total: "" & tiempototal"
%>
Copié y pegué el resultado en otra página ASP.
Ejecuté esta segunda página con la variable numero con valor 1 y luego con valor 10000.
Resultado en ambas pruebas: Tiempo total: 0,000
__________________
...___...
  #9 (permalink)  
Antiguo 12/04/2007, 12:15
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: se puede optimizar un case: ??

Pues si, por eso mismo comenté mi conclusión de este post en el mensaje anterior

Cita:
Pero no creo que sea algo en lo que tenga que perder tiempo -en optimizar un CASE- cuando puedo realmente optimizar en las BD's, creaciones de objetos Commands, etc, etc.
  #10 (permalink)  
Antiguo 12/04/2007, 12:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: se puede optimizar un case: ??

Bueno, pero a lo mejor en una aplicación grande con muchísimas estructuras case se podría ver una mejora en el rendimiento...o tal vez no
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 12/04/2007, 22:57
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: se puede optimizar un case: ??

creen que funcione este tipo de cronometro.....
Cita:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
'Comenzamos el cronómetro.
starttime = Timer()
'Toda la página a continuacion...
Do While tt < 30000
tt = tt + 1
Loop

function selecciones(variable)
response.write variable
select case variable
case 1 .....
case 2 .....
.
..
.
case 1000
end select
response.write "termino"
ya que termina
&>
<head>
</head>
<body>
<%call selecciones(numero)%>
</body>
<%'endtime = Timer()
Response.Write "Visualizacion en " & endtime-starttime & " segundos"
%>
<html>
solo es una idea... ya que utilizo este cronometro para mirar la carga de mi pagina...

espero ayude a su inquietud
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 17/04/2007, 05:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 316
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: se puede optimizar un case: ??

perdon por el retraso ,
lo medi con un timer y me da practicvamente lo mismo,

no vale la pena optimizar nada.

pero si en vez de una case se hace con ifelse anidados entonces los resultado si q se disparan, pq aqui las comparaciones si son una a auna, en el case creo q va directo a la opcion coincidente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:17.