Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Usuario887

#101
Otra cosa importante que olvide mencionar es que se que el rendimiento podria ser mejorado mucho porque puedo abrir cuatro instancias del mismo, al mismo tiempo y los cuatro se tardan los mismos 41 minutos ejecutandose.
#102
Cita de: Locura_23 en 15 Octubre 2021, 21:38 PM
por qué no programarla ?   ::) :rolleyes:

:xD :xD :xD :xD :xD :xD :xD

"Alma gemela"

¿Tu no sabes que las mujeres lo destruyen a uno?
#103
Cita de: taimito en 26 Septiembre 2021, 12:01 PM
mejor lo dejo soy un negao. se ve k soy d letras. java mucho bla bla de clases y objetos pero no se hace nada. tanto leer sin ver como funciona y lo q se puede acer no m sirve. C# si que empiezas x lo menos con el "hola mundo" pero despues son cosas muy raras.
pensaba que seria buena idea ir preparandose para cosas de Derecho relacionadas con la seguridad informatica ya que las salidas tradicionales es muy dificil abrirse camino. pero no valgo para eso. unos amigos me an dicho que = si empiezo con python o algun tipo de basic me seria mas facil. no se basic hay tantas clases k no se si merese la pena y python ya na mas q x el nombre parece algo complicado- mejor me centro en aprobar 2º q x lo q veo es bastante + dificil que 1º

Tu ya escribes en codigo. xd

Me recuerdas a mi  :¬¬
#104
Esta bien. Esta es la funcion en la que el programa demora los 41 minutos ejecutando:


int LoadNextQuoteIntoQuotesmem (struct __csvheader *csvheader, struct __quotesmem *bQuotesmem)
{
   char c;
   int i, k;

   char szBuffer[MTFMT_MEM_QUOTEMAX];

   //fsetpos(csvheader->hFile, &(csvheader->fpos));

   for (i=0;i<MTFMT_CSV_QUOTEN;i++)
   {
       c=0;
       for(k=0;c!=','&&c!='\r'&&c!='\n';k++)
       {
           c=csvheader->bBuffer[csvheader->fpos];
           csvheader->fpos++;
           if(c==0/*EOF*/)
           {
               return MTERR_CSV_EOF;
           }
           szBuffer[k]=c;
       }

       szBuffer[k-1]=0;

       switch(i)
       {
       case 0:

           strcpy (bQuotesmem->data0, szBuffer);
           break;

       case 1:

           strcpy (bQuotesmem->data1, szBuffer);
           break;

       case 2:


           bQuotesmem->data2=atof(szBuffer);
           break;

       case 3:

           bQuotesmem->data3=atof(szBuffer);
           break;

       case 4:

           bQuotesmem->data4=atof(szBuffer);
           break;

       case 5:

           bQuotesmem->data5=atof(szBuffer);
           break;

       case 6:

           bQuotesmem->data6=atof(szBuffer);
           break;
       }
   }

   if (i<MTFMT_CSV_QUOTEN)
   {
       return MTERR_QUOTEN_DOESNT_MATCH;
   }

   //fgetpos(csvheader->hFile, &(csvheader->fpos));

   return 0;
}



Por lo que podran deducir el archivo en cuestion es un CSV con nueve columnas (Y en este caso el archivo tiene 11.352.960.000 filas).

La estructura __quotesmem es simplemente una estructura en RAM en la que ordeno los datos para poder manejarlos luego.

Cabe mencionar que:

La estructura es una lista enlazada, por lo que por cada fila nueva llama a malloc. ¿Es malloc una funcion lenta? Porque de ser asi puede estar ahi el problema la verdad...

La funcion es llamada cuantas veces sea necesario hasta que retorne final del archivo MTERR_CSV_EOF.

Importante tomar en cuenta: Para cuando se llama esta funcion el contenido del archivo ya esta en memoria RAM. Se encuentra todo en csvheader->bBuffer.

Nota: Hay cadenas comentadas porque solia usar esta funcion accediendo a cada caracter individual del archivo, lo cual.... jajajaja... eso si se tardaba un buen rato. Cuarenta minutos es muy poco en comparacion. Aun asi me parece mejorable por eso hago este tema, porque ni siquiera creo que este calculando algo innecesariamente aqui. Insisto en que tal vez sean las tantas llamadas a malloc...

Eternal Idol, el programa usa siempre el mismo porcentaje de la CPU. Lo que cambia es el acceso a memoria. Si pongo en el codigo un printf("%d/%d\r", csvheader->fpos, csvheader->fsize); Puedo ver como los primeros cientos de miles de bytes se cargan rapidamente, y luego va disminuyendo la velocidad de carga. El porcentaje de uso del procesador esta siempre igual (en torno a un 15%). Lo que va disminuyendo es la velocidad de acceso a la memoria RAM.
#105
Gracias por responder, Serapis.

Ya se que es raro.

Perdon por no plantear la duda tan exactamente pero no es que se tarde en mover la informacion del disco a la memoria. Sere mas preciso respecto a la estructura del programa:

El programa carga el archivo completo en memoria (20 mb) y en esto se tarda unos 700 ms.

En lo que se demora es en lo siguiente:

Una vez el contenido del archivo en memoria, que es simplemente un conjunto de estructuras anidadas pero eso da igual... El problema es que yo estoy midiendo constantemente el rendimiento del programa, que supongase que es algo asi:


for(i=0;i<tamanyo del archivo;i++)
{

fread((struct __loquesea *) &estructura, sizeof(__loquesea), 1, hArchivo);

//...
}


Como decia, estoy midiento el rendimineto del programa y resulta que los primeros 2 segundos el programa carga mas de cien mil de estas estructuras, luego en los siguientes dos segundos carga cincuenta mil, luego veinte mil... hasta llegar a unas diez mil estructuras por segundo.

Las estructuras que necesito cargar son 11.352.960.000 en total, y podras deducir que cuando el programa falla estoy horas depurandolo lo cual me parece una tonteria...

El punto: No entiendo por que el programa carga muchas por segundo al principio y a medida que avanza la ejecucion del programa Windows ejecuta el programa mas lentamente, como previniendo que un bucle infinito inutil este denegando el servicio o evitando la ejecucion a otros programas. No entiendo por que hace esto
#106
 Hola,

Me he dado cuenta de que cuando un programa tarda mucho en un ciclo (haciendo algo util o no) Windows reduce la velocidad de ejecucion del programa (imagino que para evitar denegaciones del servicio). Quisiera saber como hacer excepciones de esto para algunos programas ya que se esta tardando literalmente cuarenta y un minutos en cargar veinte megabytes de un archivo  :huh: lo cual me parece descomunalmente demasiado. Me da igual que se realentice el sistema.

Gracias, un saludo.
#107
Dudas Generales / Re: $MFT y NTFS
19 Octubre 2021, 11:05 AM
Cita de: Randomize en 18 Octubre 2021, 18:30 PM
Mira lo que se me ha pasado por la cabeza: "eres mujer" y no lo sabemos  :rolleyes:




Pues das la impresión de querer examinar...  :silbar:




JAJAJAJAJAJAJAJAJAJA.

Me gustan las sɐuıƃɐʌ y no de forma ןɐnxǝsoɯoɥ.

No hay que ser mujer para tener buenos ojos. Al final somos nosotros los que incluso comemos por la vista despues de todo. Exceptuando a quien quiera ser exceptuado, claro.  ;D
#108
Cita de: alienxz77b en 18 Octubre 2021, 08:00 AM
C:\Users\Windows\AppData\Local\Temp\SASM\program.asm:40: error: invalid combination of opcode and operands

Estas usando la sintaxis de invoke:

https://docs.microsoft.com/en-us/cpp/assembler/masm/invoke?view=msvc-160

Mas informacion sobre la dicotomia entre call e invoke:

http://www.asmcommunity.net/forums/topic/?id=29146

En la linea cuarenta.

Eso traducido a un call corriente con una convencion de llamada de C:

https://en.wikipedia.org/wiki/X86_calling_conventions

Seria:

Citar
push addr msg2
push addr msg
call strcpy

Deberia funcionar, aunque no lo probe.
Suerte.  :-*




PD:

Si quisieras usar invoke:

Citar
invoke strcpy msg, msg2
#109
Dudas Generales / Re: $MFT y NTFS
17 Octubre 2021, 21:52 PM
Cita de: Randomize en  4 Octubre 2021, 18:50 PM
No es la primera vez que te leo, ¿por qué tanta especificación en tus preguntas?

Con la edad que tiene Windows NT 4.0 y le buscas las tres patas al gato y ahora toca el $MTF.


¿Nos estás examinando de manera muy peculiar?


No se tocan los mismos a los trols buena honda de la red, pueden pasar cosas...

Buenas noches Rando; Perdona la tardanza, no estuve conectado.

¿Por que tanta especificas las preguntas, por que tan generales las respuestas? Un dilema en el que los filosofos todos se han sumergido a veces hasta sin darse cuenta...

En el centro de las frutas esta siempre la semilla, rodeada por capas suaves. La mayoria de las veces dulce y suave. La cubierta tiene suele tener un sabor tipico, por lo general podria compararse con otras frutas; Por ejemplo, es dificil diferenciar una naranja de una mandarina.

Hace poco me tope con un documento interesante y me surgieron dudas. Vengo a EHN siempre que aunque probablemente no obtenga una respuesta concreta a una pregunta demasiado especifica tal vez si un buen indicio, es una cuestion de probabilidades.  ;D

Para examinar a los miembros mas antiguos de este foro (al menos psicologicamente) bastaria la inmensa cantidad de texto que ya escribieron, para que molestarlos para escribir mas, for that matter...

¡Sin embargo desde luego que no los examino! ¿Quien soy yo? O ustedes (?) ;)

#110
Dudas Generales / Re: $MFT y NTFS
4 Octubre 2021, 16:46 PM