limite en taille des variables perl [perl] - Perl - Programmation
Marsh Posté le 17-07-2003 à 17:25:21
ce serait pas plus malin de récupérer les enregistrements petit à peti tplutot que tout d'un coup ?
tu fetches 100 d'un coup par exemple
Marsh Posté le 17-07-2003 à 17:26:47
++Taz a écrit : taille de ta pile? |
j'ai mis a unlimited stacksize
j'essaye en 2 fois en faisant un undef au milieu... là...
undef ca "free" bien la memoire?
Marsh Posté le 17-07-2003 à 17:27:24
noldor a écrit : ce serait pas plus malin de récupérer les enregistrements petit à peti tplutot que tout d'un coup ? |
c ce que je fais ..; mais je free pas
Marsh Posté le 17-07-2003 à 17:31:07
Suri a écrit : |
oui, undef libère bien la mémoire
Marsh Posté le 17-07-2003 à 17:36:16
je connais pas trop le perl, mais bon... c'est vrai que tu pourrais peut etre amélioré ton algo en une version moins bourrin. des mes souvenirs, je suis pas sur que undef soit suffisant, tu ferais bien de chercher un module qui permette de forcer la collecte du ramasse-miettes entre 2 opérations
Marsh Posté le 17-07-2003 à 17:37:14
noldor a écrit : oui, undef libère bien la mémoire |
ok donc ca va ptet marcher alors
merci
Marsh Posté le 17-07-2003 à 17:48:12
++Taz a écrit : je connais pas trop le perl, mais bon... c'est vrai que tu pourrais peut etre amélioré ton algo en une version moins bourrin. des mes souvenirs, je suis pas sur que undef soit suffisant, tu ferais bien de chercher un module qui permette de forcer la collecte du ramasse-miettes entre 2 opérations |
oauis mais bon.. moyen le tps la... tant que ca marche
Marsh Posté le 17-07-2003 à 20:55:49
Suri a écrit : |
et ça marche alors ?
Marsh Posté le 17-07-2003 à 22:33:17
le undef libere la memoire normalement, mais ca marche pas toujours, ca depend de ton perl..
Avec perl 5.6 d'activeState sous windows tu a beau faire des undef il libere quedale l'enflure!!
Avec le SiePerl 5.6 (toujours sous win) ca libere par contre
et l'activeState 5.8 libere aussi...
sous linux je sais pas
a priori c'est du au malloc utilisé pour compiler l'interpreteur.
Sinon oui un tableau ca prend pas mal de place en perl. tu aurais peut etre interet à mettre tout ca dans un scalaire?
Marsh Posté le 18-07-2003 à 09:26:01
oui c bon, j'ai divisé ma requete en 2... execution & traitement de la premiere, undef, execution et traitement de la 2e..
c bourrin mais j'ai d'autres trucs plus importants
merci
Marsh Posté le 14-08-2003 à 11:01:03
Any storage associated with the object will be recovered for reuse (though not returned to the system, for most versions of UNIX).
Ca répond à vos questions.
undef n'est pas une fonction pour libérer la mémoire...
c'est juste pour libérer l'espace et pouvoir le réutiliser pour autre chose (gestion faite par Perl), la mémoire n'étant pas forcément rendue au système.
d
Marsh Posté le 14-08-2003 à 15:24:03
Oui mais cette FAQ dit des conneries
avec ma version de perl (5.8 d'acrive state) elle est effectivement rendue au systeme
avec les 5.6 d'activestate ce n'etait pas le cas
Marsh Posté le 17-07-2003 à 17:19:29
en perl (ligne de commande, pas cgi):
j'ai une requete SQL de bourrin qui recupere (SELECT) quelques 650 000 enregistrements d'une base et qui fout ca ds un tableau (fetchall_arrayref) (la table fait 50mo pour info )
le serveur m'envoie chier avec un "killed" au bout d'une minute environ
apres qques tests (division de la requete en plusieurs) j'en deduis que c'est ptet pas mysql qui me lance un timeout... mais autre chose, d'ou ma question:
ya t'il une limite de taille des variables perl.. si oui, comment l'augmenter? (c un script de migration qui sera lancé qu'une seule fois donc RAF si ca rame ou koi )
merci
edit:
je le faisais sur une autre machine (ss mandrake) sans probleme avant (là c une slack sur le server)
Message édité par Suri le 17-07-2003 à 17:21:16
---------------
Suri.morkitu.org : Balades au coeur de la ville...