|
Processeur saturé (Windev 22) |
Débuté par Nicolas, 29 aoû. 2018 20:23 - 2 réponses |
| |
| | | |
|
| |
Membre enregistré 8 messages |
|
Posté le 29 août 2018 - 20:23 |
Bonjour,
Je développe une petite application de langue, composé de cours, d'exercices et d'examen (pour valider les acquis).
Je me retrouve face à un problème lié au processeur. En effet, lorsque j’exécute mon programme (Sous Windev 22), celui-ci charge un grand nombre de données via des requêtes SQL pour remplir des champs et des variables (table et zone répétée (dictionnaire par exemple), structure...). Le chargement dure environ 10 secondes (30 secondes sur une machine moins performantes).
Le problème est que pendant ce temps de chargement, le processeur est saturé (utilisation à 100%)
A la fin du chargement (fin du remplissage des champs et des variables), le processeur redevient « Normal » (quasiment 0%).
Ensuite, une fois l'application chargé, le programme exécute une boucle infini, avec des requêtes SQL, pour savoir si il y a des cours ou des exercices à proposer à l'utilisateur en fonction de son niveau et de sa progression. Le processeur tourne alors à 60% indéfiniment (jusqu'à fermeture du programme).
Comme beaucoup de choses sont liées à l'IHM, je ne peux pas utiliser de tâches parallèles. Je pense ne pas avoir compris comment est utilisé le processeur, ni ce qu'il faudrait faire pour réduire les ressources utilisées.
Je viens donc vous demander votre aide, car les ressources matérielles sont quelque chose que je ne maîtrise pas, et c'est un point important en programmation.
Merci d'avance pour vos réponses.
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages |
|
Posté le 30 août 2018 - 17:20 |
Bonjour.
Il y a quelques années (hé oui... ), j'avais un souci similaire avec la RAM.
Voici le code que j'ai utilisé ; ça te donnera peut-être des idées pour la partie processeur...
Procedure Vidage_Memoire_RAM() nHdl est un entier
SI SysVersionWindows() _DANS_ ("NT 3.5", "NT 4", "NT 5", "XP", "VISTA", "7", "8", "2003S", "2008S", "2012S") ALORS nHdl = API("KERNEL32","GetCurrentProcess") API("KERNEL32","SetProcessWorkingSetSize",nHdl,-1,-1) FIN
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
Posté le 30 août 2018 - 18:00 |
Coucou,
BHF37, je suis pas d'accord, et spécialement dans ce cas c'est une connerie.
Comme beaucoup de choses sont liées à l'IHM, je ne peux pas utiliser de tâches parallèles. Si tu utilise la constante tpoThreadPrincipale c'est fait pour ^^ Reference: https://doc.pcsoft.fr/?1000021220&verdisp=160
Regarde du coté des fonctions multitache(-1) / MultitâcheRepeint Reference: https://doc.pcsoft.fr/?3015004&verdisp=210
Parallélisez les traitements dans vos applications pour gagner en performance et en fluidité. Reference:
-- In üs we trust - #92iMessage modifié, 30 août 2018 - 18:03 |
| |
| |
| | | |
|
| | | | |
| | |
|