Developpement Empirium Index du Forum Developpement Empirium



[réalisé] Traitement du tour : optimisation
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Developpement Empirium Index du Forum -> Evolutions & nouveautés - ][
Voir le sujet précédent :: Voir le sujet suivant  
Max
Créateur du Jeu
Créateur du Jeu


Inscrit le: 23 Jan 2003
Messages: 8277

 MessagePosté le: Mar 30 Avr 2013, 21:11    Sujet du message: [réalisé] Traitement du tour : optimisation Répondre en citant Back to top

J'ai réalisé une petite optimisation sur le traitement du tour.
Désormais tous les vaisseaux d'un joueur qui se déplacent vers la même destination seront traités d'un coup.
Cela devrait réduire le temps de traitement et vos rapports.

Au dernier traitement, les 8000 déplacements de vaisseaux ont pris 1h10.
Si les déplacements avaient été groupés, il n'y aurait eu "que" 1600 ordres à traiter.
On peut donc espérer un gain de 50 mn sur le traitement, ce qui rendrait plus facile l'ouverture le soir même.
_________________
AUCUN HRP sur les forums RP merci
 
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Faëinkar
commère galactique


Inscrit le: 25 Nov 2004
Messages: 784

 MessagePosté le: Mar 30 Avr 2013, 22:14    Sujet du message: Répondre en citant Back to top

Cool Sourire
Tu devrais même pouvoir passer tous les déplacements en un traitement avec une commande SQL du genre:

UPDATE TABLE_POSITION
SET COLONNE_POSITION=COLONNE_DEPLACEMENT
 
Voir le profil de l'utilisateur Envoyer un message privé
Max
Créateur du Jeu
Créateur du Jeu


Inscrit le: 23 Jan 2003
Messages: 8277

 MessagePosté le: Mar 30 Avr 2013, 22:29    Sujet du message: Répondre en citant Back to top

J'ai une table point, avec les coordonnées, et les numéros de vaisseaux.
Et j'ai une table ordre, avec notamment le numéro du vaisseau et X/Y.

Donc il faudrait un
UPDATE point SET X = une valeur qui se trouve dans une autre table ?
WHERE ID = idem ...

C'est peut-être possible, mais alors je ne sais pas faire.

Si toutes les infos (numéro de vaisseau, position actuelle, position future) se trouvaient dans la même table, je saurais faire.

Mais tu as peut-être une syntaxe ?
_________________
AUCUN HRP sur les forums RP merci
 
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Adonaï
Fille (vu la piplette)


Inscrit le: 08 Avr 2011
Messages: 1044
Localisation: T'au

 MessagePosté le: Mar 30 Avr 2013, 22:54    Sujet du message: Répondre en citant Back to top

Donc actuellement avec les nouveautés et toutes les améliorations que tu as apporté, il faut combien de temps au total pour traiter le tour?
 
Voir le profil de l'utilisateur Envoyer un message privé
Katherine Talkesh
Concierge


Inscrit le: 26 Avr 2004
Messages: 1935
Localisation: Prima / Feldyn, Ivée, Aön

 MessagePosté le: Mar 30 Avr 2013, 22:55    Sujet du message: Répondre en citant Back to top

Moins de temps qu'avant et ça tu devrais le savoir depuis le temps que tu joues. ^^
 
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
Faëinkar
commère galactique


Inscrit le: 25 Nov 2004
Messages: 784

 MessagePosté le: Mer 01 Mai 2013, 02:02    Sujet du message: Répondre en citant Back to top

ok. Je regarde.
Si je comprends bien, tu as une table avec le n° de vaisseaux et leurs coordonnées: x et y

et une autre table avec le n° de vaisseaux et les coordonnées x et y de destination.

C'est bien ça ?

Tu es en MySql il me semble. A une époque il ne permettait pas les sous-requêtes, avec ta version c'est possible ?
 
Voir le profil de l'utilisateur Envoyer un message privé
Max
Créateur du Jeu
Créateur du Jeu


Inscrit le: 23 Jan 2003
Messages: 8277

 MessagePosté le: Mer 01 Mai 2013, 08:58    Sujet du message: Répondre en citant Back to top

Je confirme le schéma des tables. Le serveur est sur un Mysql >5, donc les sous-requêtes sont possibles.

Le dernier traitement a pris un peu moins de 5h. Là on peut espérer arriver à 4h.
_________________
AUCUN HRP sur les forums RP merci
 
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Faëinkar
commère galactique


Inscrit le: 25 Nov 2004
Messages: 784

 MessagePosté le: Lun 06 Mai 2013, 15:45    Sujet du message: Répondre en citant Back to top

Essaie ce code (teste en dev avant Clin d'oeil je ne sais pas si ça passera sur MySQL)

TABLE_POINT:
NUM_FLT
X
Y

TABLE_ORDRE:
NUM_FLT
X
Y


UPDATE (
SELECT a.X, a.Y, b.X Xnew, b.Y Ynew
FROM TABLE_POINT a, TABLE_ORDRE b
WHERE a.NUM_FLT=b.NUM_FLT
)
SET
X=XNew
Y=YNew
 
Voir le profil de l'utilisateur Envoyer un message privé
Barmak
Concierge


Inscrit le: 07 Avr 2004
Messages: 1549
Localisation: Prima Feldyn

 MessagePosté le: Lun 06 Mai 2013, 16:17    Sujet du message: Répondre en citant Back to top

Faëinkar a écrit:

TABLE_POINT:
NUM_FLT
X
Y


SET
X=XNew
Y=YNew


X ,Y ??? Encore eux !!???
Sont partout !!Roulement des yeux


Dehors !! Flèche
Bon d'accord ! Embarassé
 
Voir le profil de l'utilisateur Envoyer un message privé
Hollowman
Fille (vu la piplette)


Inscrit le: 03 Mai 2004
Messages: 1160
Localisation: Quelque part entre deux points lumineux

 MessagePosté le: Lun 06 Mai 2013, 18:06    Sujet du message: Répondre en citant Back to top

Barmichounette, XY font partie de chacun d'entre nous. Faudra te faire une raison.

Nous avons tous un XY qui sommeille en nous Mort de rire
 
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Developpement Empirium Index du Forum -> Evolutions & nouveautés - ][ Toutes les heures sont au format GMT + 2 Heures
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum