Erreur sur les temps d'execution ?

Je fais l'exercice 3 du QCM2010 en python, mon algorithme fonctionne mais je trouve que le temps d'exécution de 40 ms est vraiment faible, pour un exercice plus complexe que le 1 dont le temps d'exécution maximal est de 250 ms. Le python étant lent, je me fais refouler lors de la soumission au cinquième test, car la limite temporelle est atteinte.
Est-ce normal qu'il soit inférieur à celui des autres exercices ? Ou est-ce que d'autres programmant en python on réussi à tenir la limite de temps ?

Merci

Bonjour,

Les temps indiqués sur le site d'entrainement sont pour le C/C++. Nous appliquons des facteurs multiplicateurs pour les langages plus lents (Java, Python, ...).

Si ton exercice ne passe pas les tests à cause de la limite de temps c'est que tu n'as pas l'algorithme optimal ;)

Mais est-ce normal quand même que le temps d'exécution maximal soit inférieur à celui des autres exercices ?

avec N = 199000 et L = 15, je suis à environ 290 ms :(

max@max-laptop:\~/Bureau/prologin\$ time python sequence.py
AATTCGGCCGATCGT
real 0m0.295s
user 0m0.272s
sys 0m0.012s

La limite a pas été fixée arbitrairement. Les orgas ont testé différents algorithmes et ont fixé la limite de sorte à ce que seul l'optimal puisse passer tous les tests. Et je pense qu'ils ont suffisamment fait de tests pour que ça s'applique à tous les langages. :p

Donc oui, même quand ça parait impossible comme ça, la limite est bien fixée. :o

On ne code pas la solution dans chaque langage... Nous programmons en général deux solutions, en C++ : une qui correspond à un algorithme que l'on veut bien faire passer (pas forcément l'optimal), une que l'on veut rejeter, et on met la limite entre les deux.

Les limites des autres langages sont alors calculées avec des facteurs multiplicatifs (pour le Python qui est effectivement très lent (on n'utilise pas encore psyco), c'est au moins 20, de mémoire, effectivement).

Bein non parce que les facteurs multiplicatifs ont plus de chance d'être abusés positivement pour les autres langages que l'inverse

Le mieux est de tout coder en C++ et dans un autre langage. Comme ça, s'il y a une différence au niveau des tests passés, vous nous le signalez et on corrige. :)

J'ai utilisé clock() et GetTickCount() pour voir un peu le temps d'exécution (déjà première observation il n'y a apparemment aucune différence entre les 2) le problème c'est que j'ai l'impression que y'a des micros erreurs dans ces fonctions, pour une partie du code qui s'effectue quasiment en temps constant, j'obtiens majoritairement 0ms d'exécution, et de temps en temps 15 ou 16 ; un si grand écart me parait impossible. Le problème c'est que du coup ces micros erreurs multipliées par le nombre d'appels de cette partie du code, ben y'a une perte de temps énorme. Alors je voudrais savoir si ces micros-erreurs ne viennent pas de mon pc, qui doit gérer d'autres choses en parallèle. Et comment faire en sorte d'éviter ces micros erreurs.

Une différence de 20ms n'est pas forcément significative. Mesure le temps d'exécution quand tu lances 20 ou 100 fois ta fonction : ça devrait moins varier.

En informatique, on obtient rarement une précision à la milliseconde près.

Bonjour
je suis face a un probleme étrange, pour l'exo 4 mon algo arrivait mardi soir jusqu'au test 9(mais ne le passait pas) et aujourd'hui j'ai fait quelque modifs et voyant que ca ne marchait pas(je bloque au test 7) je revient en arriere et reteste l algo de mardi soir et la surprise je ne passe pas le test 7....
Donc je voudrais savoir pourquoi?
Merci

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.