elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Windows reduce velocidad de ejecucion.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Windows reduce velocidad de ejecucion.  (Leído 12,769 veces)
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Windows reduce velocidad de ejecucion.
« Respuesta #10 en: 21 Octubre 2021, 17:04 pm »

Citar
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.

Eh, entonces no tarda 40 minutos en cargar el archivo en memoria... Tarda 40 minutos en hacer el copiado a tu __quotesmem. ¿Donde haces el malloc en esta función? Idealmente no vas a querer llamar a esta función millones de veces... Vas a querer asignar un espacio considerable porque el coste de la interrupción es alto.

Aún así, algo esta haciendo windows si te esta limitando el % de utilización de CPU. ¿Alguna configuración de energía?


En línea

Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Windows reduce velocidad de ejecucion.
« Respuesta #11 en: 21 Octubre 2021, 17:20 pm »

el coste de la interrupción es alto.

Idealmente no querras llamar esta funcion millones de veces

A malloc la llamo tantas veces como filas haya en el archivo, y en este hay once millones...

Esa funcion solo carga la fila actual en la estructura, en bQuotesmem, luego ese puntero es recogido por el caller de la funcion y llama a otra que mete la estructura en la lista enlazada (pero claro, cada vez que la llama, es decir, por fila, reserva memoria nuevamente)

¿Entonces si se debe a eso?


En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Windows reduce velocidad de ejecucion.
« Respuesta #12 en: 21 Octubre 2021, 17:23 pm »

Si el programa tiene un solo hilo ese es el comportamiento esperado y logico.

Ejemplo, 12 procesadores/nucleos:


Código
  1. #include <cstdio>
  2.  
  3. void main()
  4. {
  5. for (int x = 0; ; x++);
  6. }

Usa el 100% de un nucleo/proceador, ni uno solito mas, el S.O. no puede poner en ejecucion UN hilo en varios procesadores/nucleos a la misma vez por obvias razones.



Código
  1. #include <windows.h>
  2. #include <cstdio>
  3.  
  4. DWORD WINAPI WasteThread(LPVOID lpParam)
  5. {
  6. for (int x = (int)lpParam; ; x++);
  7. }
  8.  
  9. void main()
  10. {
  11. for (int x = 0; x < 3; ++x)
  12. CreateThread(NULL, 0, WasteThread, (LPVOID)x, 0, nullptr);
  13. for (int x = 0; ; x++);
  14. }



Con 4 hilos (el principal y los 3 creados) pasa a consumir (100 / 12 * 4) = 33% de CPU.
« Última modificación: 21 Octubre 2021, 17:31 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Windows reduce velocidad de ejecucion.
« Respuesta #13 en: 21 Octubre 2021, 17:34 pm »

Si, Eternal Idol, entiendo que la ejecucion de un ciclo no puede ser dividida, pero lo que no entiendo es por que disminuye, porque no es que sea baja la velocidad, es que disminuye con el tiempo, es decir, es mas rapida en un momento y mas lenta a medida que pasan los segundos... eso es lo que no logro comprender



¿Es eso lo que esta detectando el sistema? ¿Un waste.exe?
En línea

Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Windows reduce velocidad de ejecucion.
« Respuesta #14 en: 21 Octubre 2021, 17:37 pm »

Tarda 40 minutos en hacer el copiado a tu __quotesmem

Exacto
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Windows reduce velocidad de ejecucion.
« Respuesta #15 en: 21 Octubre 2021, 17:40 pm »

Si, Eternal Idol, entiendo que la ejecucion de un ciclo no puede ser dividida, pero lo que no entiendo es por que disminuye, porque no es que sea baja la velocidad, es que disminuye con el tiempo, es decir, es mas rapida en un momento y mas lenta a medida que pasan los segundos... eso es lo que no logro comprender


No se. ¿Te estas quedando sin RAM? Tu programa opera con memoria virtual, eventualmente tendra que paginar si no paras de reservar. ¿Estas ordenando los datos a medida que los procesas? Con unos pocos, al principio, el ordenamiento es mucho menos costoso ...

¿Es eso lo que esta detectando el sistema? ¿Un waste.exe?

No; waste.exe es el ejecutable generado con el codigo que deje, en sus dos versiones. El sistema no detecta nada, esa es una conclusion apresurada y sin respaldo.

marax: edita los mensajes por favor en lugar de crear dos consecutivos.
« Última modificación: 21 Octubre 2021, 17:42 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Windows reduce velocidad de ejecucion.
« Respuesta #16 en: 21 Octubre 2021, 17:43 pm »

Vaya, juraría que windows le daba prioridad a uno o dos núcleos por defecto. ¿Quizás mejore el rendimiento si le das una afinidad a los primeros dos cores? Siendo el proceso de un solo hilo...

Edit: Aún así, no creo que mejore el rendimiento drásticamente.
« Última modificación: 21 Octubre 2021, 17:46 pm por MinusFour » En línea

Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Windows reduce velocidad de ejecucion.
« Respuesta #17 en: 21 Octubre 2021, 17:50 pm »

No; waste.exe es el ejecutable generado con el codigo que deje, en sus dos versiones. El sistema no detecta nada, esa es una conclusion apresurada y sin respaldo.

Ya lo se ya lo se... Fue una metafora. Me referia a que si el sistema operativo estaba detectando un programa que aparentemente no esta haciendo nada mas que dar vueltas en la nada.



Ya se que pasa... Comente la linea que llama a la funcion que reserva memoria y cargo los 20 MB en menos de tres segundos  :xD :xD :xD :xD :xD :xD

No se por que malloc es tan lenta... Bueno. Supongo que tendre que arreglarmelas sin listas enlazadas... A saber como hago eso... En fin.

Muchisimas gracias en verdad... No se cuanto habria tardado en darme cuenta de eso por mi mismo...

3 segundos... hijo de p*ta...
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Windows reduce velocidad de ejecucion.
« Respuesta #18 en: 21 Octubre 2021, 17:54 pm »

Ya lo se ya lo se... Fue una metafora. Me referia a que si el sistema operativo estaba detectando un programa que aparentemente no esta haciendo nada mas que dar vueltas en la nada.

Si ese fuera el caso no le daria el 100% de un procesador logico a cada hilo de waste.exe  ;)

Vaya, juraría que windows le daba prioridad a uno o dos núcleos por defecto. ¿Quizás mejore el rendimiento si le das una afinidad a los primeros dos cores? Siendo el proceso de un solo hilo...

Edit: Aún así, no creo que mejore el rendimiento drásticamente.

Exactamente lo mismo de arriba.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Windows reduce velocidad de ejecucion.
« Respuesta #19 en: 21 Octubre 2021, 17:59 pm »

Nada... La afinidad igual no era el problema. Me hubiera gustado que fuera cuestion solo de ajustar la afinidad porque no tendria que volver a programar todo otra vez xd



Por si a alguien le interesa:

Ya que de antemano conozco el tamaño del archivo, lo que hice fue modificar la funcion que adhiere al final de la lista creando un nuevo espacio de memoria para que en vez de eso simplemente cargase en un espacio mayor anteriormente reservado sumando el tamaño de la lista:

Es decir, de:

Código
  1. struct __quotesmem *newq=(struct __quotesmem *)malloc(sizeof(struct __quotesmem));
  2. ...
  3.  
  4. quotesmem->next=newq;

A:

Código
  1. memcpy((struct __quotesmem *) &quotesmem[i],
  2.               (struct __quotesmem *) &newq,
  3.               sizeof (struct __quotesmem));
  4.  
  5.        quotesmem[i].next=NULL;
  6.        quotesmem[i-1].next=&quotesmem[i];
  7.        quotesmem[i].last=&quotesmem[i-1];

Asi no tuve que modificar el comportamiento del programa entero ya que esta totalmente basado en listas enlazadas.



Gracias de nuevo.
« Última modificación: 21 Octubre 2021, 19:05 pm por marax » En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SFX Winrar: velocidad de ejecucion
Hacking
agustinbv9 2 3,477 Último mensaje 21 Febrero 2011, 05:18 am
por agustinbv9
REDUCE LA VELOCIDAD
Redes
dragos89 1 1,941 Último mensaje 13 Marzo 2011, 13:46 pm
por Printf
Aumento la velocidad del bus pero se reduce el multiplicador
Hardware
crazykenny 5 4,998 Último mensaje 26 Diciembre 2011, 19:51 pm
por crazykenny
Qt velocidad de ejecucion
Programación C/C++
makinavaja3500 0 2,878 Último mensaje 4 Octubre 2015, 02:13 am
por makinavaja3500
Se reduce la velocidad de adopción de IPv6: ¿qué está pasando?
Noticias
wolfbcn 0 2,772 Último mensaje 22 Mayo 2018, 21:44 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines