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: [Résolu] Allocation de mémoire... ? - Gwym - 30-09-2009

(30-09-2009, 03:34 PM)Anthor a écrit : Je me demandais ce que tu faisais des variables et de leurs portées...


Moi ? Je n'en fais rien puisque c'est MaxOhBalle qui utilise (utilisait !?) ce principe de concaténation Wink

Comme dit, je l'utilise de manière différente : avec des nombres et au sein d'objets, sous la forme $ma_classe->{'attribut_'.$i++};
Et surtout dans des cas qui ne nécéssitent pas de recherche d'optimisation du temps d'execution, mais plutôt du temps de développement (ex : outils d'aide au développement, outils d'administration...) car un rapide test montre que c'est encore plus gourmand en temps :

ITERATIONS : 200000
ECRITURE
${'ma_variable_nommee_'.*} = value;
TIME > 0.2753
$var[*] = value;
TIME > 0.1547
$c->$('attr_'.*) = value;
TIME > 0.2741

LECTURE
$a = ${'ma_variable_nommee_'.*}
TIME > 0.1473
$a = $var[*];
TIME > 0.0605
$a = $c->$('attr_'.*);
TIME > 0.1779

p.s./edit

a la réflexion, je l'utilise aussi directement... Big Grin
Et pour en revenir au thème "il ne faut optimiser que ce qui en vaut la peine"
Avant ce post je ne me posais même pas la question, mais petit test à l'appui :

ITERATIONS : 10000000
ECRITURE
$ma_variable = value;
TIME > 1.9332
$var[0] = value;
TIME > 2.5531
$var['id'] = value;
TIME > 2.8618
$c->mon_attr = value;
TIME > 3.8392

LECTURE
$a = $ma_variable;
TIME > 1.9275
$a = $var[0];
TIME > 2.4840
$a = $var['id'];
TIME > 2.7319
$a = $c->mon_attr;
TIME > 3.3629

d'après cela, une variable globale est presque deux fois plus rapide qu'un attribut de classe...
Pour autant je n'utilise et je n'utiliserai que des objets :nana:


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

Citation :Moi ? Je n'en fais rien puisque c'est MaxOhBalle qui utilise (utilisait !?) ce principe de concaténation 16

C'est bien pour cela, et le fait que tu postes sur une communauté, qui fait que les exemples donnés se doivent de respecter au moins la portée des variables, un exemple de fonction non fonctionnelle n'est pas intéressant, surtout lorsqu'elle n'est pas marquée en tant que telle.
C'est une source d'erreur pour les personnes qui repasseront derrière.

Tu parles de variables globales mais il n'y en a dans aucun des exemples ^^ Dans ton exemple la première est une variable scalaire.


RE: [Résolu] Allocation de mémoire... ? - wild-D - 01-10-2009

Citation :$ma_classe->$('attribut_'.$i++);

^^ qu'un code soit pas fonctionnel à la limite ça pose pas de problème, mais le code pourrait au moins être syntaxiquement correct.

à part ça ce genre de construction me paraît plus que tordu. (j'ai beau tenté d'imaginer j'ai de la peine à voir des context où ça aurait un sens)


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

Nul besoin de m'agresser violemment... Effectivement j'ai mélangé les genres :oops:

Dans mon post initial je répondais simplement à zeppelin qui disait :
" exemple($buildings['maison']); est quand même plus simple que exemple($buildings_maison_bois, $buildings_maison_pierre, ...);"

que l'on pouvait passer *le nom* en argument et qu'il était inutile de passer toute la liste des arguments.

Il ne donne ni ne demande d'exemple de fonction "fonctionnelle", je ne vois pas pourquoi j'aurais répondu plus que mon exemple, a savoir exemple($nom_var).
(Je n'aurai peut-être pas dû le mettre dans des balises 'code' effectivement )

Suite à la demande de précision (que je ne comprenais pas, je l'ai dit), j'ai donné des exemples de ce que j'utilise, mais effectivement, je suis allé un peu vite et je me suis mélangé les pinceaux entre dollar, parenthèses et crochets.
Voici donc un exemple fonctionnel et complet pour clore définitivement le sujet. A l'avenir je m'abstendrai, désolé :bye2:.

Code :
<?php     
    class c {
    
    }
    
    $ma_classe = new c;
    
    for ($i = 0 ; $i < 10 ; ) {
        $ma_classe->{'attribut_'.$i++} = $i;
    }
    
    var_dump($ma_classe);
?>

(01-10-2009, 09:53 AM)Anthor a écrit : Tu parles de variables globales mais il n'y en a dans aucun des exemples ^^ Dans ton exemple la première est une variable scalaire.

Ma citation de 'variable globale' concerne mon script de test de performance. Une variable définie au niveau du script est globale. (http://www.php.net/manual/fr/language.variables.scope.php).


RE: [Résolu] Allocation de mémoire... ? - naholyr - 01-10-2009

Non mais arrêtez hein, sérieusement, les variables à nom dynamique ça ne sert à rien, c'est du caca, bouh. Il n'y a *aucun* cas (hors fonctions bas niveau) où ça a un sens de l'utiliser.
Ok c'est bien c'est rigolo ça existe, mais franchement vous pouvez vous amuser avec mais pitié n'utilisez jamais ça, ce serait un suicide électronique comme on dit du côté de Royal...


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

:heuu: Dernier commentaire/question avant de me taire définitivement :

(01-10-2009, 11:15 AM)wild-D a écrit : à part ça ce genre de construction me paraît plus que tordu.

(01-10-2009, 02:03 PM)naholyr a écrit : ça ne sert à rien, c'est du caca, bouh. Il n'y a *aucun* cas (hors fonctions bas niveau) où ça a un sens de l'utiliser.

Mon commentaire : Ravi d'apprendre que je programme du caca tordu... :triste3: Wink

Ma question : que signifie une fonction bas niveau en PHP ??


RE: [Résolu] Allocation de mémoire... ? - naholyr - 01-10-2009

Ce que j'entends par "bas niveau" dans ce cas ce sont les fonctions du genre compact(), extract() (voir la doc). Si on souhaite reproduire (mais pourquoi ??? Pourquoiiiiii ? :O) le comportement d'extract() on passera pas ce type de syntaxe.
Le mot n'était pas très bien choisi, j'aurais pu dire "ultra-spécifiques" à la place Wink