Les délires de l'optimisation

hello les geeks !
encore une fois je viens me renseigner histoire de ne pas mourir trop con… ben ouais, j’y connais que dalle en programmation.
BREF !
il y a qques temps, une news a fait le tour du net: un bonhomme cvendait une xbox survitaminée, équipée d’un celeron 1400 mhz à core j’sais plus quoi.
le délire: quand ce proco fonctionne à sa vitesse max, les jeux fonctionnaient mal ! il existe donc un switch qui fait que le proco tourne à 1.4 ghz ou 633 mhz mais la encore, les jeux fonctionnaient mal car le proco a plus de mémoire cache que le proco d’origine.
en clair, même à cause d’un cache plus important, les jeux déconnent à plein tube !

je savais que les consoles, du fait de leur architecture unifiée, bénéficiaient des bienfaits de l’optimisation mais je pensait pas que l’optimisation allait aussi loin ! en mettant du meilleur matos ca marche moins bien !
du coup, je me pose des questions sur les PC:
les développeurs PC sont ils vraiment des fainéants ?
optimiser des applications sur PC doit vraiment être un cauchemanrd: je vois mal mes jeux déconner parce que je mets une meilleure carte graphique !
si y’a des développeurs bobox, à votre avis, quelle PC faut-il pour obtenir le même niveau de performance que sur bobox ? (no guerre inside hein ) (en 640*480, etc quoi !)
ces réponse me permettrait d’imaginer quelle pourcentage de performance on perd sur nos PC, à cause de toutes ces configurations possibles…

C’est pas forcement des optimisations non plus… ca peut etre juste des raccourcis qui marchent toujours au niveau timing, pagination, etc avec des contraintes (genre programmeur feignant mais a juste titre puisque l’archi est toujours constante) qui fait que ca marche avec la config X, mais pas avec X + petit changement. Enfin tout n’est pas du a des optimisation de sauvage dans ces cas la, mais ptet juste a une valeur hardcodee par exemple.

Et puis y’a pas si longtemps, on avait le même genre de choses sur pc. Les “anciens” jeux vidéo fonctionnaient souvent sur le principe de “à chaque image, j’avance de X unités”, alors que maintenant c’est “à chaque image, j’avance de X unités * temps écoulé depuis la précédente”. Je simplifie à mort, mais l’idée est là.

Je me souviens de la fois où j’ai essayé de lancer Fire Power sur mon Pentium… “vroum boum vroum boum vroum boum - game over”, durée de la partie : 1/2 seconde.

Une autre chose a prendre en compte, meme si le codeur est fleimard, il utilise les libs du xdk (le X-Box DK) qui elle sont optimise (en tout cas on l’espere tous ) et qui sont base sur un certain nombre d’assomptions sur la vitesse du CPU, le cache et sa taille, meme des trucs comme la vitesse du DVD-ROM et tout un tas d’autre “petit” detail du meme type !

Quand on programme sur console, on s’appui enaurmement sur le fait que le hardware ne va pas changer (a part 2/3 details, habituellement precise dans les docs) que cela soit par fleime, par gout d’optimization, ou tout simplement parce que pourquoi se prendre la tete et rajouter de la complexite a son code quand on sait qu’il va tourner sur une machine fixe et precise !

Tout comme c0unt0. Sauf que je rajouterai qu’en effet, beaucoup de jeux sont hardcodés au niveau de leur timer : ils considérent tourner à 60 FPS (ou 50 FPS suivant le cas), et point final.

Mais je pense qu’en cas de crash, le problème vient plutôt des timings de lecture, et d’accés RAM : souvent certaines choses sont calculées au quart de poil de patte de fourmis, pour que ça rentre nickel sur la console cible. Et si ça change, ben ça crash Souvent ces optims sont faites pour optimiser, mais parfois uniquement par facilité, voire même pas ignorance (eh oui, quand tu fais des trucs asynchrones de partout sur ta console, tu peux difficilement tester sur plusieurs configs différentes puisque… y’en a qu’une, de config )

Je ne sais pas si je vais être hors propos, mais bon je me lance.
 
Quand on voit comment a été programmé Grand Tourismo sur la PlayStation. En faisant cour : Les programmeurs avaient codé un soft qui calculait les ressources système de chaque puces sachant calculer pour ensuite redistribuer les temps de calculs à chacun des « calculateurs ».
 
Ca c’est bien un type d’optimisation bien poussé quand même.
 

Je suis pas sur d’avoir compris tout ce que tu as dis (parce que bon, y avait pas tant de procos que ca dans une ps1), mais pour avoir pu jeter un coup d’oeil de gauche et de droite, les programmeurs de chez polyphonie digital sont des violeurs patentes de drosophiles, et quand on voit le resultat : on se dit que ca vaut le coup…

C’est aussi une des raisons qui ont donne la reputation de console dificile a la PS2 : si tu es pas pres a faire 30 de prisons a Mouche-Land, pour viols a l’etalage : t’en sors rien

Voui Zaxe, de biens grands mots pour dire en gros : ben ils regardaient combien de CPU ils bouffaient et si ils en bouffaient trop, ils diminuaient leurs calculs (LOD) pour rester à 60 FPS. Paske bon sur PS1, t’as pas 40 processeurs à qui dédier le boulot, donc tu peux pas faire de la répartition de charge, par contre ce qui était souvent fait (mais rarement avec autant que brio que pour les GT il est vrai, mais pas les memes moyens non plus ), c’est d’adapter dynamiquement les détails en fonction des resources disponibles pour rester à une vitesse constante

Le tout étant de le faire de telle sorte bien évidemment que le joueur n’y voit que du feu :stuck_out_tongue:

J’ai hâte de coder sur les prochaines consoles (que j’ai pas d’infos dessus) parce que ça va déchirer grave (mais j’ai pas d’infos dessus)


Ce message a été édité par tuo le 17/03/2004

c’est cool dans le coin, tu pose une question et y’a plein de gens qui te répondent !
donc dans le cas que je donne (changement de proco) les problèmes ne viennent pas obligatoirement d’une optimisation à outrance. mais bion je lache pas l’affaire, je reviens avec une question !
j’entends souvent dire que les programmeurs PC se contentent de se reposer sur la puissance de nos engins pour sortir un truc qui va bien tourner certes, mais pas sur beaucoup de machines.

les programmeurs PC sont ils vraiment des fainéants ou pas (en règle général hein !)

désolé de mettre 2 messages la suite mais j’arrive pas à éditer mon message… 1ere fois que je vosi ce bug, en espérant que ce ne soit pas du au fait que mainenant ce’st compatible avec mozilla/firebird…

bref ! je voulais juste éditer pour dire que je suis d’accord pour partager la non connaissance de tuo