Autor
|
Tema: Windows reduce velocidad de ejecucion. (Leído 14,329 veces)
|
MinusFour
|
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
Mensajes: 310
|
el coste de la interrupción es alto.
Idealmente no querras llamar esta funcion millones de vecesA 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
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si el programa tiene un solo hilo ese es el comportamiento esperado y logico. Ejemplo, 12 procesadores/nucleos: #include <cstdio> void main() { for (int x = 0; ; x++); }
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.
#include <windows.h> #include <cstdio> DWORD WINAPI WasteThread(LPVOID lpParam) { for (int x = (int)lpParam; ; x++); } void main() { for (int x = 0; x < 3; ++x) CreateThread(NULL, 0, WasteThread, (LPVOID)x, 0, nullptr); for (int x = 0; ; x++); }
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
Mensajes: 310
|
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
Mensajes: 310
|
Tarda 40 minutos en hacer el copiado a tu __quotesmem
Exacto
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
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
Mensajes: 310
|
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 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
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 310
|
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: struct __quotesmem *newq =(struct __quotesmem *)malloc(sizeof(struct __quotesmem )); ... quotesmem->next=newq;
A: memcpy((struct __quotesmem *) "esmem [i ], (struct __quotesmem *) &newq, sizeof (struct __quotesmem)); quotesmem[i].next=NULL; quotesmem[i-1].next="esmem[i]; quotesmem[i].last="esmem[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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
SFX Winrar: velocidad de ejecucion
Hacking
|
agustinbv9
|
2
|
3,656
|
21 Febrero 2011, 05:18 am
por agustinbv9
|
|
|
REDUCE LA VELOCIDAD
Redes
|
dragos89
|
1
|
2,100
|
13 Marzo 2011, 13:46 pm
por Printf
|
|
|
Aumento la velocidad del bus pero se reduce el multiplicador
Hardware
|
crazykenny
|
5
|
5,437
|
26 Diciembre 2011, 19:51 pm
por crazykenny
|
|
|
Qt velocidad de ejecucion
Programación C/C++
|
makinavaja3500
|
0
|
3,248
|
4 Octubre 2015, 02:13 am
por makinavaja3500
|
|
|
Se reduce la velocidad de adopción de IPv6: ¿qué está pasando?
Noticias
|
wolfbcn
|
0
|
3,199
|
22 Mayo 2018, 21:44 pm
por wolfbcn
|
|