Короткий вопрос: у меня есть javascript, который очень глубоко рекурсивно. Как увеличить размер стека, чтобы я мог его выполнить (что-то вроде «ulimit -s unlimited» в Unix-системах)?Увеличение размера стека в браузерах
Длинная история: мне нужно нарисовать график, и я использую Cytoscape JS (http://js.cytoscape.org/) в сочетании с расширением макета Dagre (https://github.com/cytoscape/cytoscape.js-dagre). Алгоритм рисования идет глубоко в рекурсии, и я в конечном итоге получаю «Недостаток RangeError: максимальный размер стека вызовов превышен» в Chrome и «слишком много рекурсии» в Firefox. Как установить размер стека неограниченным или очень большим (например, «unimit-unimit» в Unix-системах), чтобы рисовать график?
Спасибо!
Вы уверены, что ваш алгоритм является правильным? Вы подсчитали количество вложенных вызовов, которые у вас были в момент выхода из пространства стека? Это разумная цифра? – trincot
Да, алгоритм правильный. Дело в том, что граф довольно большой, а алгоритм рисования глубоко рекурсивно. Однако, используя другие алгоритмы рисования (которые не используют рекурсию), я могу сделать это довольно быстро ... Поэтому я предполагаю, что, если я могу увеличить размер стека до достаточно большого размера, я смогу его нарисовать , Я искал, но не смог найти ответа ... В худшем случае мне нужно будет изменить алгоритм Дагра, чтобы изменить его с рекурсивного на итеративный ... Но я хотел бы проверить, есть ли способ установки стека ограничение размера движка браузеров javascript. – iwicopd2
Добавляем больше контекста, здесь вы можете найти ограничение размера стека для нескольких браузеров: http://stackoverflow.com/questions/7826992/browser-javascript-stack-size-limit?rq=1. Мне просто нужно увеличить этот предел. – iwicopd2