Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

js récursivité et stack

7 réponses
Avatar
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

7 réponses

Avatar
unbewusst.sein
Une Bévue wrote:

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

Avatar
unbewusst.sein
Une Bévue wrote:

ce que j'ai vérifié aproximativement :


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

--
Une Bévue

Avatar
Laurent vilday
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

Avatar
SAM
Une Bévue wrote:

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


Avatar
SAM
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


Avatar
unbewusst.sein
Laurent vilday wrote:


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

Avatar
unbewusst.sein
SAM wrote:

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