Page 1 sur 1

Diminuer le temps de préparation d'une partie de quizz

Publié : 22 sept. 2014, 16:52:54
par Odin
Jocelyn a ajouté la suggestion n°580 sur Mantis : Diminuer le temps de préparation d'une partie de quizz

Description : Le temps de préparation d'une partie de quizz est trop élevé.
Une fois les 15 secondes d'attente normale écoulées, le choix du mode, de la durée et du thème choisis est enregistré.
A partir de ce moment, le bot exécute des requêtes dans la base pour préparer la nouvelle partie.
Pour une partie de thème 15 lancée il y a quelques jours, le bot a exécuté 462 requêtes pour un temps total d'exécution de 14.7 secondes.
Il a donc fallu attendre à peu près 30 secondes entre la commande !quizz et le démarrage réel de la partie.

Il faudrait que la préparation d'une nouvelle partie prenne toujours moins de 5 secondes.


Vous pouvez commenter cette suggestion en postant un nouveau message dans cette discussion.

Re: Diminuer le temps de préparation d'une partie de quizz

Publié : 23 sept. 2014, 07:33:54
par Tecsomane
Est-ce qu'il serait possible de pré-préparer les parties pour que chaque combinaison thème/mode/durée ait une partie de pré-préparée ?
Ou est-ce que tout doit être fait en temps réel ?

Re: Diminuer le temps de préparation d'une partie de quizz

Publié : 23 sept. 2014, 22:27:12
par Jocelyn
Il y a un peu de tout :
- du ménage à faire (suppression dans la base d'enregistrements périmés : vieux historiques...)
- des recomptages (nombre de questions de chaque type dans chaque catégorie...)
- des choses à calculer ou actualiser (pourcentage de questions à piocher dans chaque catégorie du thème choisi...)

Dans toutes les requêtes exécutées pendant la préparation d'une partie :
- certaines sont inutiles (car la même chose est déjà faite, soit par le bot à un autre moment, soit par un automatisme dans la base)
- certaines sont nécessaires mais trop longues à l'exécution : il faut alors réécrire ces requêtes pour que l'exécution soit plus rapide
- certaines n'ont pas besoin d'être exécutées à chaque démarrage d'une partie : dans ce cas il faut les déplacer dans une autre partie du code, pour qu'elles soient exécutées quand ça ne cause pas d'attente

J'ai regardé la liste des 462 requêtes exécutées :
- 2 requêtes prenaient 5s + 0.25s : je les ai supprimées, ce qu'elle font est déjà fait en temps réel par 2 automatismes dans la base
- 1 autre requête prenait 2.65s : je l'ai modifiée, maintenant c'est presque immédiat

Avec ces 3 changements cela fait donc déjà gagner plus de 7 secondes sur les presque 15 secondes d'attente au démarrage.
Il y a sûrement d'autres optimisations possibles, je devrai regarder plus en détail.

462 requêtes, ça peut sembler beaucoup, mais finalement, dans tout ça il y a 377 requêtes dont le temps total d'exécution est de 0.352s. Il y a juste quelques requêtes dans le tas qui prennent un peu trop leur temps...

Re: Diminuer le temps de préparation d'une partie de quizz

Publié : 16 oct. 2014, 03:54:50
par Odin
Cette suggestion a été programmée dans la version 3.0.0 du robot de quizz.

Pour toute suggestion ou demande supplémentaire, merci d'ouvrir une nouvelle discussion.

Re: Diminuer le temps de préparation d'une partie de quizz

Publié : 17 oct. 2014, 01:06:39
par Jocelyn
J'ai modifié une autre requête :
- avant : à peu près 3.5 secondes d'exécution
- après modification : à peu près 0.0005s d'exécution (7000 fois plus rapide)

Avec les précédentes optimisations, ça fait donc un gain approximatif de 10.5 secondes dans la préparation d'une partie de quizz.
Le temps de préparation d'une partie de quizz devrait donc être à peu près 4.5 secondes.

J'ai fait les tests sur mon ordinateur, il faudra vérifier ce que ça donne sur les bots de Quizzz.net une fois la v3 installée.