Duda de proceso de mi programa y proceso system

Iniciado por crazykenny, 12 Abril 2011, 20:02 PM

0 Miembros y 1 Visitante están viendo este tema.

crazykenny

Hola; el caso es que tengo una duda.
Bueno, ahora, lo que es mirando el uso de CPU de uno de mis programas (uno de consultas de datos de mi base de datos), pues me aparece algo extraño; os explico; el caso es que, bueno, dentro del programa, pues hay una rutina que te muestra las cartas de magic y yugioh que hay con uno o mas parametros X; por ejemplo, si insertas en el programa para que te muestren, yo que se, las cartas de color negro y que esten en español, pues te las muestra; hasta ahi bien; entonces, al principio del programa, puedes elegir que te las muestre ordenadas por orden de insercion (que muestra por orden de carta mas antigua insertada a la mas nueva), o bien, puedes hacer que te las muestre al azar, por lo que, en esta ultima opcion, lo que hace basicamente el programa, es ordenarlas a base de utilizar random; entonces, lo que me pasa es que, mientras el programa va "seleccionando" las cartas con el criterio de busqueda insertado (bueno, he puesto parametro X antes, espero explicarme), en este caso, todas las cartas que esten en Español, pues parece que el proceso "SYSTEM", comienza a utilizar entre un 17% y un 21% como mucho de la CPU, mientras que, el proceso de mi aplicacion, pues como que dificilmente sube del 00%, llegando, puntualmente, a estar entre el 01% y el 02%, y, cuando cierro la aplicacion en plena "tarea" de seleccion de cartas, pues como que el proceso "SYSTEM" vuelve a estar en uso al 00%, y bueno, la pregunta es, basicamente, ¿porque el proceso SYSTEM consume la cantidad de CPU que consume en vez de hacerlo el proceso de mi programa, que supongo que seria lo logico?.
Cabe destacar que la estructura del codigo es la siguiente:
Citar
         xdat#=-1
         For trcx#=0 To productos#
            poorrand#=0
            For trewor#=0 To base_term#
               If searching#(trewor#,0)=1
                  opcion_yy#=searching#(trewor#,1)
                  opcion_yz#=datos_de_productos$(trcx#,trewor#)
                  If opcion_yz#=opcion_yy#
                     poorrand#=poorrand#+1
                  EndIf
               EndIf
            Next
            If poorrand#=opciones_xx#
               If xdat#=-1
                  xdat#=xdat#+1
                  Dim predecesor#(xdat#)
                  predecesor#(xdat#)=trcx#
                  Goto predicin
               EndIf
               If xdat#>-1
                  Dim predecesor_b#(xdat#)
                  For trex#=0 To xdat#
                     opciones#=predecesor#(trex#)
                     predecesor_b#(trex#)=opciones#
                  Next
                  xdat#=xdat#+1
                  Dim predecesor#(xdat#)
                  xdat#=xdat#-1
                  For trex#=0 To xdat#
                     opciones#=predecesor_b#(trex#)
                     predecesor#(trex#)=opciones#
                  Next
                  xdat#=xdat#+1
                  predecesor#(xdat#)=trcx#
               EndIf
               .predicin
            EndIf
         Next
         If xdat#=-1
            Goto probe_dev
         EndIf
         Dim predecesor_b#(xdat#)
         For tr#=0 To xdat#
            .rechoice
            opciones#=Rand(0,xdat#)
            If predecesor#(opciones#)=-1
               Goto rechoice
            EndIf
            predecesor_b#(tr#)=predecesor#(opciones#)
            predecesor#(opciones#)=-1
         Next
Por cierto, mi CPU es un Core Duo de 2 nucleos a 2.4 GHZ, con 2 GB de RAM, por lo que, a fin de cuentas, el proceso SYSTEM utiliza una CPU al 40%, lo que serian unos 960 MHZ de esta.
Cabe destacar, que, bueno, tengo insertadas mas de 1200 y pico cartas, y la inmensa mayoria (sobre un 85/90% de estas) estan en Español, y, aparte de tardarme unos 117 segundos en clasificarlas en la RAM, pues por logica, a medida que se van insertando mas cartas, pues va mas lento.
Tambien decir que el codigo insertado para medir el tiempo lo he quitado, y que, curiosamente, aparte de consumir un tope de unos 13,6 MB el programa, lo que realmente va lento es el bucle For/Next que va reservando espacio en memoria para guardar las cartas, y no el codigo que he creado con el RND (random) para "desornenar" las cartas, y lo comento porque yo pensaba que seria al reves.
Gracias de antemano por vuestra atencion, y me disculpo por las molestias causadas.
Saludos.
-------------------------------------------------------------------------------------------------
Por cierto, se me olvido comentar que si pongo un bucle de 5 FOR/NEXT seguidos, en el sentido de uno detras de otro, con numeros muy altos (supongamos 10000), el proceso del programa consume todo un nucleo del sistema, y no el proceso SYSTEM.
Saludos.
A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
http://informaticayotrostemas.blogspot.com.es/2013/12/situacion-de-la-educacion-actual-en.html
https://informaticayotrostemas.blogspot.com/