Performances : allocations de mémoire

Eléphant du PHP | 171 Messages

13 juil. 2011, 14:45

Bonjour à tous,

J'aurai une question dont je crois déjà détenir la réponse.

Je réalise un script qui doit récupérer des informations par le biais de requête, il récupère des informations en JSon, je les convertis et les stocke dans un tableau.
Je fais ça pour différentes données ce qui me donne donc plusieurs tableaux.
Les tableaux ne sont pas léger, sans pour autant être trop conséquent. (enfin ça varie selon la situation dans le script).
Ensuite, une fois tous les tableaux collectés, j'effectue un traitement sur ces tableaux, (triage, comparaison...)

La question est :

Est ce qu'il est mieux de récupérer les informations, les stockés dans le tableau et traité le tableau toute de suite, afin de libérer la variable contenant le tableau et donc de la mémoire et de la réutiliser ensuite pour le prochain tableau.

OU || OR

Tout récupérer en premier et faire tous les traitements après sur chaque tableaux ?

Pour ma part je pense que la première solution semble la mieux en terme de performances, mais est ce que les différences sont flagrantes a votre avis de manière général.

Sinon est ce que en passant certains d'entre vous connaisse des bon sites qui parle sur le sujet ? (Optimisation) Pas au point de la guillemets et l'apostrophe :P mais les grandes lignes...

Merci d'avance !
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

ViPHP
xTG
ViPHP | 7331 Messages

13 juil. 2011, 15:24

Cela dépend de ton flot de données. Mais il est clair que si tu as deux tableaux de 10mio et que ton serveur n'alloue que 15mio pour PHP beh la solution est vite trouvée...

Eléphant du PHP | 171 Messages

13 juil. 2011, 19:26

Okay merci
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

ViPHP
AB
ViPHP | 5818 Messages

14 juil. 2011, 20:53

C'est typiquement suivant ton script et le plus simple pour répondre est encore de faire des tests avec memory_get_usage() et ini_get('memory_limit')