Максимальная глубина рекурсивного вызова
Способ пощупать наживую глубину рекурсии, которую поддерживают js движки. По достижению максимальной глубины вложенности вызовов функций интерпретатор генерирует исключение. Значит для замера максимальной глубины достаточно инкрементировать значение счетчика, до тех пор, пока не вывалится ошибка.
var max_depth; max_depth = 0; function recursive () { max_depth += 1; recursive(); } try { recursive() } finally { alert('Max recursion depth is ' + max_depth); }
Визуализация
Сырые данные
Safari 6.02 | 43680 |
Chrome 23 (mac) | 24544 |
Chrome 23 (win) | 25021 |
Opera 12.10 | 16384 |
Firefox Aurora 19.0a2 | 31712 |
Internet explorer | 41153 |
nodejs | 25113 |
Все браузеры, кроме firefox-а давали ответ практически моментально. А лисица висела минуты 3-4, прежде чем назвать свою цифру.
Из интересных выводов: если при использовании рекурсивных вызовов, можно получить неприятный сюрприз в случаях, близких к граничным. Разработчик, бди.
На сколько я помню, в nodejs максимальный размер стека настраивается. Флаг “--max-stack-size”, если мне не изменяет память