FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Porque ocurre esto?
Buenas,
Trabajando con un TCheckListBox (con 7 líneas solamente), en un bucle de unos 14 millones de iteraciones, al preguntar por el estado de uno de los elementos del checklistbox, el proceso se ralantiza muchisimo, sin embargo haciendo la misma pregunta en una variable de tipo bool es muy rpaído.. El caso que os comento que es muy lento
El caso rapido
Se os ocurre porqué? Saludos :-) |
#2
|
||||
|
||||
Por favor, no olvides poner títulos descriptivos a tus preguntas, gracias
¿Por qué es lento?, porque son 14 millones de iteraciones. Primer caso: tiene que acceder al valor de una propiedad de un objeto. Segundo caso: una variable boolean. Si la diferencia es ¿10 milésimas de segundo?, multiplicado por ¡¡¡ 14 millones !!!, serían 14000000*10 = 140000 segundos=2333 minutos =38 horas=casi 2 días ¿Para qué puede servir hacer ese bucle? |
#3
|
|||
|
|||
Hola Casimiro,
Disculpa por el lapsus!!! Veras, estoy haciendo un programa para evaluar todas las combinaciones posibles de la loto 6/49 (Combinaciones de 49 elementos tomados de 6 en 6) aproximadamente son 14 millones. Por tanto para evaluarlas todas hay que hacer un bucle con este número de iteraciones. Por otro lado, el caso mas lento (cuando se accede a los elementos del CheckListBox para preguntar por la propiedad checked) tarda 3 o 4 minutos (no recuerdo ahora bien de memoria). y el otro caso entre 2 y 3 segundos. Pero independientemente del porqué de este número de iteraciones tan elevado, lo que NO ENTIENDO es porqué cuando al IF le coloco como condición Checklistbox.Checked[0] tarda tantisimo más que si le coloco una variable de tipo bool IF bChecked. Porque he preguntado esto, pues porque para realizar la interfaz gráfica del programa necesito este control y para no enredar mas de lo necesario el codigo teniendo que establecer un paralelismo entre el control checklistbox y las variables bool me gustaria utilizar solamente el control gráfico. No se si me explico..... Saludos y gracias por el interes :-) Paco. |
#4
|
||||
|
||||
Como te han comentado, se hace lento porque tiene que acceder a varias capas de abstracción (VALOR de una PROPIEDAD de un OBJETO).
Podrías solucionarlo así:
|
#5
|
|||
|
|||
Entendido, muchas gracias :-)
Saludos. Cita:
|
#6
|
||||
|
||||
Cita:
Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta. |
#7
|
|||
|
|||
Cita:
Debe ir fuera ya que al evaluar el checklistbox dentro del bucle se enlentece mucho el proceso. La asignación se debe realizar fuera de este bucle principal en otro distinto donde se asigne al array booleano los valores del checklistbox.checked Es la misma solución que puse yo como opción b, solo que se me pasó ponerle el indice a la variable
Saludos :-) Última edición por paquechu fecha: 09-01-2014 a las 19:39:50. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mostrar un caracter si ocurre una condicion | titooo | MS SQL Server | 4 | 31-07-2013 12:23:50 |
No se porque falla esto :-( | jorgegetafe | Varios | 3 | 26-07-2007 17:19:58 |
myDAC: ¿qué ocurre después de 60 días? | pepe123 | Conexión con bases de datos | 0 | 26-01-2007 18:01:50 |
¿Que ocurre con Vista y el DRM? | Casimiro Notevi | La Taberna | 7 | 10-01-2007 22:02:26 |
|