PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Traitement batch très long
Traitement batch très long
Iniciado por roumegou, 19,dic. 2018 17:55 - 3 respuestas
Publicado el 19,diciembre 2018 - 17:55
Bonjour
je dois faire un traitement batch très très long.
Je l'avais conçu au début en passant par une table de travail en sql;
mais cela me génère une table de plus de 70 millions d'enregistrements
et cela coince ensuite pour requeter dessus.

du coup j'ai revu mon traitement pour faire une majorité de traitements
en mémoire et en tableau de structure pour ne générer que les 650000
résultats attendus.

Bref j'ai testé mon système sur un fichier de 1000 clients et cela
focntionne bien. Sauf que cela doit passer sur 650 000 clients

au début, cela traite 1000 clients toutes les 30 secondes
mais maintenant au bout de 7h-8h de traitement c'est 1000 clients en 20
minutes


D'où ma question ...
pourquoi cela devient de plus en plus long ?
je fais des variableraz de mes structures
Y'a-t-il des instructions à placer ?

Merci de vos conseils.

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
334 mensajes
Publicado el 19,diciembre 2018 - 19:49
Je pense que tu te heurtes au fractionnement de la mémoire, phénomène connu dans d’autre langages de devs quand tu as un programme qui utilises beaucoup de mémoire suffisamment longtemps pour que Windows ne puisse pas défragmenter sa mémoire.

As-tu essayés de parallélisme ton batch pour réduire ton temps d’éxécution ?

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Mensaje modificado, 19,diciembre 2018 - 19:52
Publicado el 20,diciembre 2018 - 09:01
Dergen avait écrit le 19/12/2018 :
Je pense que tu te heurtes au fractionnement de la mémoire, phénomène connu
dans d’autre langages de devs quand tu as un programme qui utilises beaucoup
de mémoire suffisamment longtemps pour que Windows ne puisse pas défragmenter
sa mémoire.

As-tu essayés de parallélisme ton batch pour réduire ton temps d’éxécution ?


Merci de ta rréponse Dergen
J'avoue ne pas connaitre grand chose là dessus.
Qu'entends tu pas parallélisme ?
j'avais pensé à envoyer mon traitement en plusieurs batchs (par pays)
et effectivement à flagguer le fichier de départ pour repartir sur des
extracts plus courts.
Mais s'il y a un moyen direct, cela m'interesse.

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Publicado el 20,diciembre 2018 - 09:13
Dergen a formulé ce mercredi :
Je pense que tu te heurtes au fractionnement de la mémoire, phénomène connu
dans d’autre langages de devs quand tu as un programme qui utilises beaucoup
de mémoire suffisamment longtemps pour que Windows ne puisse pas défragmenter
sa mémoire.

As-tu essayés de parallélisme ton batch pour réduire ton temps d’éxécution ?


Bonjour,
j'avais lancé une analyse de performance pendant la nuit mais hélas il
faut que le traitement aille jusqu'au bout pour pour exploiter ce
rapport. Comme j'ai été obligé de le supprimer ce matin ...

Donc j'ai recommencé en limitant à 2000 et le résultat est interessant

1 - cela confirme qu'au début, 1000 cela se torche en 30 secondes
(ce matin les 1000 prenaient 30 minutes)

dans mon traitement, ce qui prend le plus de temps est un tableautrie
qui est executé 1972 fois (sur 2000 clients)
Normal c'est le tableau de structure qui me permet ensuite de retrouver
les 6 meilleures qq choses par clients et sur des règles multiples

donc ce que tu me dis Dergen, est surement très vrai.
J'use la mémoire
donc il faut réussir à segmenter.

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com