JeuWeb - Crée ton jeu par navigateur
[Résolu] Allocation de mémoire... ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Allocation de mémoire... ? (/showthread.php?tid=4367)

Pages : 1 2 3 4


RE: Allocation de mémoire... ? - MaXOhBalle - 29-09-2009

(29-09-2009, 01:25 PM)Gwym a écrit :
(28-09-2009, 09:48 PM)Gwym a écrit : Si tu veux une réponse approximative pour le temps d'exécution, mets simplement les différentes méthodes dans des boucles de 10000 iterations, mesure le temps

Vu que finalement personne ne s'y est attelé... pour ma culture personelle Wink

ITERATIONS : 216000
ECRITURE
${'ma_variable_nommee_'.$x.'_'.$y.'_'.$z} = value; // 3 * 0..60
TIME > 0.4576
${'ma_variable_nommee_'.$x} = value; // 0..216000
TIME > 0.3042
$var[$x][$y][$z] = value;
TIME > 0.1814
LECTURE
$a = ${'ma_variable_nommee_'.$x.'_'.$y.'_'.$z};
TIME > 0.3339
$a = ${'ma_variable_nommee_'.$x}
TIME > 0.1718
$a = $var[$x][$y][$z];
TIME > 0.0934

(PHP Version 5.2.10-pl0-gentoo)

Un Array est 3x plus rapide en moyenne, ma question n'était donc pas en l'air à ce que je vois, merci beaucoup


RE: [Résolu] Allocation de mémoire... ? - NicoMSEvent - 29-09-2009

Tu bosse sur une Gentoo, je te tire mon chapeau Smile

J'ai essayé de mettre mon serveur sous Gentoo... ça a bien marché pendant un an, ensuite je suis passé a FreeBSD, pour revenir a une Debian. En fait, je salue Gentoo pour son haut degré didactique, sans plus (c'est bien l'optimisation, mais a quel cout! :p)


RE: Allocation de mémoire... ? - Anthor - 29-09-2009

(29-09-2009, 02:49 PM)MaXOhBalle a écrit : Un Array est 3x plus rapide en moyenne, ma question n'était donc pas en l'air à ce que je vois, merci beaucoup

En même temps tu t'es pas demandé pourquoi elles existaient et pourquoi tu vois jamais du code avec des concaténations de variables ?


RE: [Résolu] Allocation de mémoire... ? - MaXOhBalle - 29-09-2009

Oui mais je voulais [plutôt] en être sûr, avoir des chiffres ou des avis (peut-être que ça aurait pu être juste un "confort" (array plus agréable à utiliser) et que les performances étaient moins bonnes, mais non, enfin voilà Smile

Merci pour tout


RE: [Résolu] Allocation de mémoire... ? - zeppelin - 29-09-2009

(29-09-2009, 11:40 AM)wild-D a écrit : je crois que naholyr faisait référence à des remarques erronée style la comparaison de '.' et ',' comme opérateur de concaténation: ',' n'est pas un opérateur de concaténation Tongue (le fait de le comprendre est important)

mea culpa, j'ai oublié de signaler dans une chaîne :heuuu: *honte*

MaXOhBalle si ton but est d'économiser chaque milimilimiliseconde (comment ça se dit? :-p) tu n'utilise pas d'abstraction de bdd etc... bref plus grand chose enfaite :-p

Pense une chose: Une requête sql non optimisé te fait perdre bien 100 fois plus de temps que toutes tes variables réunies... -> array, tu va pas regretter (surtout que les arrays PHP sont quand même simples à utiliser si tu compares aux vecteurs JAVA etc...). Donc si vraiment tu veux gagner du temps d'exec sort le manuel de sql et apprends le par-cœur :-p

J'ai encore un petit exemple pour la route: Dans $buildings['maison'] tu as par exemples tous les coûts du bâtiment, à savoir bois pierre metal terre et j'en passe. Comment tu le passe en paramètre à un objet ou une méthode / fonction? exemple($buildings['maison']); est quand même plus simple que exemple($buildings_maison_bois, $buildings_maison_pierre, ...);


RE: [Résolu] Allocation de mémoire... ? - Gwym - 29-09-2009

(29-09-2009, 06:44 PM)zeppelin a écrit : J'ai encore un petit exemple pour la route: Dans $buildings['maison'] tu as par exemples tous les coûts du bâtiment, à savoir bois pierre metal terre et j'en passe. Comment tu le passe en paramètre à un objet ou une méthode / fonction? exemple($buildings['maison']); est quand même plus simple que exemple($buildings_maison_bois, $buildings_maison_pierre, ...);

Ce n'est pas vraiment un argument, l'utilisation est la même que pour une référence de tableau :

Code :
function exemple($nom_var) {
${$nom_var. ...} // .'bois', .'pierre', etc...
}

exemple('buildings_maison_');

mais comme l'a fait remarquer wild-D, c'est surtout le fait de se priver des outils de travail sur les tableaux qui est dommage. (D'autant que puisqu'on est à la poursuite de pouièmes, foreach, non utilisable dans le cas concatenation, est susceptible d'être plus rapide que for dans certains cas Wink )


RE: [Résolu] Allocation de mémoire... ? - Anthor - 29-09-2009

(29-09-2009, 09:04 PM)Gwym a écrit :
Code :
function exemple($nom_var) {
${$nom_var. ...} // .'bois', .'pierre', etc...
}

exemple('buildings_maison_');

J'aimerais bien en savoir un peu plus Big Grin


RE: [Résolu] Allocation de mémoire... ? - Gwym - 30-09-2009

(29-09-2009, 09:46 PM)Anthor a écrit : J'aimerais bien en savoir un peu plus Big Grin

C'est à dire ? Je ne comprend pas trop 'un peu plus' sur quoi ?

Je voulais simplement dire que passer en paramètre une référence par nom partiel de variable ou par nom de tableau était valide dans les deux cas, sans devoir passer tous les noms complets de toutes les variables... Après tout dépend de l'utilisation qui en est faite dans la fonction. On peut très bien y mettre un méga switch case avec toutes les variables ou une définition explicite au cas par cas si on est bien bourrin :cogne:

Personnellement j'utilise aussi dans certains cas cette méthode de concaténation de noms, mais parce que j'ai des besoins différents que la recherche d'optimisation de MaXOhBalle. Et j'utilise des nombres, non des '_bois', '_pierre' etc, donc je peux utiliser des techniques du genre for ($i =0 ; $i < 10 ; $i++) { ${'var_'.$i} = ...}


RE: [Résolu] Allocation de mémoire... ? - NicoMSEvent - 30-09-2009

rien n'empeche d'utiliser les tableaux associatifs au lieu de "numéroter" les ressources
$ressource['bois']
$ressource['fer']
$ressource['or']
etc...

et remplacer un
for ($i =0 ; $i < count($ressource) ; $i++) { $ressource[$i] }
par un
foreach(array_keys($ressource) as $keys){ $ressource[$keys] }


RE: [Résolu] Allocation de mémoire... ? - Anthor - 30-09-2009

(30-09-2009, 01:17 PM)Gwym a écrit :
(29-09-2009, 09:46 PM)Anthor a écrit : J'aimerais bien en savoir un peu plus Big Grin

C'est à dire ? Je ne comprend pas trop 'un peu plus' sur quoi ?

Je voulais simplement dire que passer en paramètre une référence par nom partiel de variable ou par nom de tableau était valide dans les deux cas, sans devoir passer tous les noms complets de toutes les variables... Après tout dépend de l'utilisation qui en est faite dans la fonction. On peut très bien y mettre un méga switch case avec toutes les variables ou une définition explicite au cas par cas si on est bien bourrin :cogne:

Personnellement j'utilise aussi dans certains cas cette méthode de concaténation de noms, mais parce que j'ai des besoins différents que la recherche d'optimisation de MaXOhBalle. Et j'utilise des nombres, non des '_bois', '_pierre' etc, donc je peux utiliser des techniques du genre for ($i =0 ; $i < 10 ; $i++) { $('var_'.$i) = ...}

Je me demandais ce que tu faisais des variables et de leurs portées...