Je suis un programmeur Java. Je trouve que souvent, même si mon algorithme est correct, je reçois un Time Limit Exceeded sur mes soumissions avec Codechef. Existe-t-il des techniques à employer pour soumettre des solutions en Java dans les concours de programmation ?
Réponse
Trop de publicités?Sur CodeChef, toutes les soumissions en Java ont une limite de temps 2x supérieure à celle de leur homologue en langue maternelle (par exemple, c/c++/pascal). Cependant, une chose qui n'est pas mentionnée est que le juge commence à se comporter très lentement lorsque la consommation de mémoire est élevée, ce qui arrive assez souvent avec les solutions Java. Le juge CodeChef fonctionne avec un paramètre de mémoire de 64 MB pour tous les programmes Java. Vous devriez essayer d'utiliser le moins de mémoire possible et essayer d'exécuter la même solution localement avec -Xms = 64 MB.
L'augmentation de la limite de temps peut également être causée par le fait que lorsque l'utilisation de la mémoire du programme s'approche du maximum autorisé (qui est de 64 Mo dans ce cas), la JVM invoque le ramasseur d'ordures qui utilise le CPU de manière très intensive et retarde ainsi l'exécution du programme.