Salut, le programme que j'ai soumis (en langage C) s'execute en 0.00s en user time, mais en 0.1s en wall time, que signifie le wall time et comment l'améliorer, merci.
Wall time
Salut,
Le user time c'est le temps pendant lequel ton programme a exécuté ses instructions, et le wall time c'est le temps total entre le moment où il a été lancé et où il s'est terminé.
Il y a plusieurs facteurs expliquant cette différence :
- le système d'exploitation fait des choses pour ton programme, quand tu affiches du texte par exemple
- tous les programmes ne s'exécutent pas en simultané. certains sont mis de côté pour pouvoir laisser du temps aux autres. Si ton programme est mis de côté, cela sera décompté dans le wall-time
En bref, pour diminuer le wall-time, tu peux diminuer le user time (le temps que ton programme passe à faire des calculs), le temps que le système d'exploitation passe à travailler pour toi, et c'est tout !
Attention, le wall-time n'est pas vraiment une mesure pertinente de l'efficacité de ton programme, le user time + system time fait bien mieux le taff.
(oups, deux réponses en même temps)
Le user time est le temps mis par ton programme lui même uniquement, tandis que le wall time est le temps qui passe réellement du début à la fin de ton programme.
Par exemple, si tu fais un sleep(10)
, ton programme aura un très petit temps "user" mais 10 secondes de temps réel (temps affiché sur l'horloge contre le mur, d'où "wall time").
Tant que ton programme va assez vite pour passer les tests, je ne me soucierais pas trop du temps wall à ta place, car il varie beaucoup selon à quel point les serveurs de correction sont chargés. Il n'est de toute façon utilisé que pour tuer ton programme s'il prend vraiment vraiment vraiment trop de temps à s'exécuter. Le temps "user" est le plus important dans la plupart des cas.
- non pertinent -
Ah, j'ai mal lu les réponses
Non il me semble que c'est bel et bien le wall time qui bloque la validation, il ne sert pas seulement à kill mon prgramme https://imgur.com/a/FGRkcw0
Ma soumission: https://prologin.org/train/2002/qualification/chaine_de_0_et_de_1/158539
Pour 2002, les contraintes ont l'air beaucoup trop strictes. On va voir pour corriger ça.
Merci bien,
Je me demande comment les gens qui ont réussi en 2002 ont fait alors... J'imagine que j'ai juste loupé une solution nlogn évidente... Sinon la seule contrainte qui me marait bizarre dans ce programme est que N peut etre 0, fgets a un comportement indéfini pour count=0, et générer un tableau de taille 0 est interdit...
Probablement avec des langages où les coefficients sont différents, ça a du leur permettre de passer entre les mailles du filet.