Rapport #67 : Amélioration des performances

Tout commença par la report d'un bug concernant une partie trés lente. En regardant la sauvegarde de cette partie, les équipes de Factorio ont découvert l'usine la plus grande qu'ils n'avaient jamais vu, ce qui pourrait expliquer les lenteurs ressentis.

Le problème vient des bras robotisés, ce sont les éléments du jeu qui consomme le plus de puissance CPU, ce qui peut poser problème lorsqu'ils sont trop nombreux.

Exemple avec cette construction:

Les bras prennent du charbon sur le tapis roulant puis remplissent les coffres. Quand les coffres sont plein ils ne font plus rien... en apparence! Car au fait ils font énormement de choses:
  • Quel est la liste de toutes les objets devant le bras ?
  • Pour chaque objet, vérifier s'il y a de la place pour les placer dans le coffre
  • Pour chaque vérification, vérifier pour chaque stack d'objet du coffre s'il est plein et qu'il ne reste pas de place
Imaginez ce processus sur des milliers de bras, le tout a éxécuter 60 fois par seconde. C'était loin d'être optimal.

L'image suivante montre les améliorations qu'ont apporté les équipes de Factorio à ce système (qui sera disponible dans la version 0.11.9) (Les cercles rouges indiquent les entités en sommeil):

Maintenant, les bras font la même chose qu'auparavent, mais quand il n'y a plus rien a faire, ils se mettent en sommeil. Ils vont également prévenir le coffre et le tapis de les réveiller s'il y a un changement (coffre qui se vide, nouvel item qui arrive sur le tapis, etc.). Mais en attendant, le bras est en sommeil, et ne consommera plus aucun CPU. On remarque que cela est également valable pour les tapis qui peuvent aussi se mettre en sommeil lorsque les objets ne se déplacent plus.

Grâce a cette amélioration, sur leur map de test, 85% des bras sont maintenant en sommeil, ce qui divise par 2 le temps de calcul de chaque image. L'optimisation suivante sera les tapis roulants qui sont désormais les nouveaux objets les plus gourmand en CPU, mais cela devra attendre la version 0.12.
Posté par Tronics, le 03/01/2015 à 3:24.Source
Validé par Tronics. Dernière modification par Tronics le 03/01/2015 à 3:29.
Commentaires de la news Factorio
Rapport #67 : Amélioration des performances :

Vous devez être connecté pour laisser un commentaire.