Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Taille en mémoire des différents fetch

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
dorian53
WRInaute accro
WRInaute accro

Inscrit le: 10 Avr 2005
Messages: 1466

URL permanente de ce messagePosté le : Mer Juil 11, 2007 16:26    Sujet du message: Taille en mémoire des différents fetch

Bonjour,

Je cherche à savoir si un fetch_array prend 2 fois plus de taille en mémoire qu'un fetch_row ?

Prenons l'exemple de MySQL :

- fetch_row retourne un recordset de résultats dans un tableau avec un indice comme nom de colonne

Array ( [0] => 1 [1] => Je suis du texte )

- fetch_array retourne un recordset de résultats dans un tableau avec un indice comme nom de colonne, et le nom du champs dans une colonne supplémentaire.

Array ( [id] => 1 [0] => 1 [libelle] => Je suis du texte [1] => Je suis du texte )


Vous imaginez donc les conséquences avec une requête retournant plusieurs milliers de résultats.

J'ai cherché à savoir s'il y avait des pointeurs en modifiant les données mais visiblement, non.

Je n'ai pas trouvé de fonction pour connaitre la taille d'une variable en mémoire.

Merci
 
dorian53
NextGeneration
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Sep 2006
Messages: 422
Localisation: Webanthill et Itraque

URL permanente de ce messagePosté le : Mer Juil 11, 2007 18:25    Sujet du message: Taille en mémoire des différents fetch

question taille en mémoire, c'est similaire. Les clés sont indexées via un hashset, donc la place que prennent les "libellés" est purement proportionnelle a leur longueur propre.

Si tous tes libellés font 10 octets et que tu as 10 champs, ca bouffera 100 octets en mémoire, que ton resultset fasse 4 lignes ou 4 milions
 
NextGeneration Visiter le site web du posteur
dorian53
WRInaute accro
WRInaute accro

Inscrit le: 10 Avr 2005
Messages: 1466

URL permanente de ce messagePosté le : Mer Juil 11, 2007 21:39    Sujet du message: Taille en mémoire des différents fetch

Salut,

Ce n'est pas la taille du nom de la colonne qui me pose soucis, c'est le fait que les données soient en double.
 
dorian53
Morph1er
WRInaute impliqué
WRInaute impliqué

Inscrit le: 07 Juil 2004
Messages: 307

URL permanente de ce messagePosté le : Mer Juil 11, 2007 21:45    Sujet du message: Taille en mémoire des différents fetch

Je pense que l'array bouffe plus surtout si tu l'utilises avec les 2 index (le mode par défaut ou MYSQL_BOTH)

Et d'après la doc :
http://fr2.php.net/manual/fr/function.mysql-fetch-array.php

Il est très légèrement plus lent ( ce n'est pas significatif cela dit)

EDIT : Après si tu veux un truc ultra optimisé, vaut mieux le fetch row.

PS : Ca me rappelle les études faites sur les opérateurs de concaténation "+", ".", "," ou sur l'utilisation du print et du echo ou encore celle des quotes ou double quotes.
 
Morph1er Visiter le site web du posteur
dorian53
WRInaute accro
WRInaute accro

Inscrit le: 10 Avr 2005
Messages: 1466

URL permanente de ce messagePosté le : Jeu Juil 12, 2007 9:34    Sujet du message: Taille en mémoire des différents fetch

Salut,

Morph1er a écrit:
Et d'après la doc :
http://fr2.php.net/manual/fr/function.mysql-fetch-array.php

Il est très légèrement plus lent ( ce n'est pas significatif cela dit)


Merci pour ta réponse mais je souhaiterais trouver des réponses concrètes au problème.

J'avais lu le significativement plus lent, mais j'en ai rien conclu. Légèrement plus lent pour la requête ou l'initialisation du recordset sûrement, mais après ?

- Es-ce que ça double (j'osais espérer que la fonction en natif utiliserait des pointeurs, non) ?
- Ou sinon as-tu une fonction ou une technique pour obtenir la taille d'une variable en mémoire (pas memory_get_usage) ?

J'aimerais, en effet, m'appuyer sur une documentation officielle ou des benchs pour avancer ces possibilités.[/i]
 
dorian53
jarreweb
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 12 Sep 2003
Messages: 184
Localisation: saint-etienne

URL permanente de ce messagePosté le : Jeu Juil 12, 2007 10:50    Sujet du message: Taille en mémoire des différents fetch

je pense qu'il vaut mieux utiliser mysql_fetch_assoc()
qui renvoi un tableau associatif et non pas associatif ET indexé comme le fait mysql_fetch_array()
il y a donc deux fois moins d'entrées dans le tableau
http://fr.php.net/mysql_fetch_assoc
 
jarreweb
Bh@Mp0
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 18 Jan 2005
Messages: 245

URL permanente de ce messagePosté le : Jeu Juil 12, 2007 10:59    Sujet du message: Taille en mémoire des différents fetch

Mieux, restons dans l'objet : mysql_fetch_object()
 
Bh@Mp0 Visiter le site web du posteur
dorian53
WRInaute accro
WRInaute accro

Inscrit le: 10 Avr 2005
Messages: 1466

URL permanente de ce messagePosté le : Jeu Juil 12, 2007 11:18    Sujet du message: Taille en mémoire des différents fetch

Merci les gars, je connais l'intérêt et le comportement de chacune des fonctions. Je cherche à comparer objectivement sur des chiffres plus ou moins précis les performances.
 
dorian53
NextGeneration
WRInaute impliqué
WRInaute impliqué

Inscrit le: 27 Sep 2006
Messages: 422
Localisation: Webanthill et Itraque

URL permanente de ce messagePosté le : Ven Juil 13, 2007 12:03    Sujet du message: Taille en mémoire des différents fetch

dorian53 a écrit:
Merci les gars, je connais l'intérêt et le comportement de chacune des fonctions. Je cherche à comparer objectivement sur des chiffres plus ou moins précis les performances.


Ben tu crées un jeu de test et du bench
 
NextGeneration Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort