js récursivité et stack

Le
unbewusst.sein
sur un de mes scripts j'ai le message d'erreur suivant :
//Erreur : too much recursion FF 3
//Maximum call stack size exceeded. Safari 3

je sais que dans ce cas il y a 5655 objets imbriqués.

comme je peux tester ça facilement, je souhaite tester avant de lancer
le script.
je cherche donc à savoir quelle est la max de la pile pour ce genre de
chose

ie. quand le nombre d'objets imbriqués est de 471, ça passe très bien.

--
Une Bévue
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
unbewusst.sein
Le #6772171
Une Bévue
je cherche donc à savoir quelle est la max de la pile pour ce genre de
chose...


un peu de google m'a donné :
1000 pour Firefox
100 pour Safari/Weebkit

ce que j'ai vérifié aproximativement :
471 ça passe sur ff pas sur saf
39 passe sur saf

ça implique de changer mon code afin qu'il ne soit plus récursif...

--
Une Bévue

unbewusst.sein
Le #6772161
Une Bévue
ce que j'ai vérifié aproximativement :


j'ajoute que 5655 passe sur la dernière nightly de Webkit...

--
Une Bévue

Laurent vilday
Le #6772151
sur un de mes scripts j'ai le message d'erreur suivant :
//Erreur : too much recursion FF 3
//Maximum call stack size exceeded. Safari 3


Je vais faire mon chieur encore, mais quel script ? Parce que on parle
de quoi exactement là ?

je sais que dans ce cas il y a 5655 objets imbriqués.


Ca éclaire pas beaucoup sur ce qui se passe mal.

comme je peux tester ça facilement, je souhaite tester avant de lancer
le script.


Tester quoi ? C'est quoi "ça" ?

je cherche donc à savoir quelle est la max de la pile pour ce genre de
chose...
ie. quand le nombre d'objets imbriqués est de 471, ça passe très bien.


Franchement, sans un bout de code pour voir de quoi on parle, je pense
qu'il n'existe pas de réponse définitive à ta "question".

--
laurent

SAM
Le #6773431
Une Bévue
ce que j'ai vérifié aproximativement :


j'ajoute que 5655 passe sur la dernière nightly de Webkit...


oui, eh ben c'est pas une raison

la récusrsivité doit vraiment fatiguer mon CPU

et puis ... non ... c'est pas bien

éviter absolument !

voilà ce que j'en pense :-)

--
sm


SAM
Le #6773421
sur un de mes scripts j'ai le message d'erreur suivant :
//Erreur : too much recursion FF 3
//Maximum call stack size exceeded. Safari 3


Franchement, sans un bout de code pour voir de quoi on parle, je pense
qu'il n'existe pas de réponse définitive à ta "question".


Ha! là, avec Yvon, faut vraiment avoir des dons de médium :-)

Il est tellement dans son truc qu'il pense que tout le monde regarde par
dessus son épaule ce qu'il claviote ;-)

Si toutefois on arrive à suivre son code très personnalisé
(appel à tout un tas de trucs +/- comme des biblis (non documentées !))

--
sm


unbewusst.sein
Le #6774241
Laurent vilday

Je vais faire mon chieur encore, mais quel script ? Parce que on parle
de quoi exactement là ?


de la limite de la pile càd profondeur de récursion max.

sur clj on m'a répondu :
Betas:

WebKit/Safari r34088 --> 139808 (!)
FF3.0pre --> 2999
IE8.0.6001 --> 2340

Non-betas:

Safari 3.1.1 --> 498
FF2 --> 999
IE 7.0.5730.11 --> 2507
Opera 9.27 --> 3328


Ca éclaire pas beaucoup sur ce qui se passe mal.


euh, c'est une question générale, quand on dépasse la limite du stack,
ça ne peut pas se passer bien, peu importe le code.


dans mon code je peux savoir, à l'avance, de quoi j'ai besoin (la
profondeur de stack dont j'ai besoin est aprox. égale au nombre de "["
dans une chaine de caractère)

et, comme je pensais naïvement que ce genre de chose était défini au
niveau du brouteur comme une constante...

j'aurais pu tester

--
Une Bévue

unbewusst.sein
Le #6774251
SAM
j'ajoute que 5655 passe sur la dernière nightly de Webkit...
oui, eh ben c'est pas une raison


la récusrsivité doit vraiment fatiguer mon CPU

et puis ... non ... c'est pas bien

éviter absolument !

voilà ce que j'en pense :-)


si tu n'acceptes pas la récursivité, autant ne pas programmer hein...
--
Une Bévue


Publicité
Poster une réponse
Anonyme