Работаю над оптимизацией кода, и столкнулся в ходе оптимизации с переполнением стека. И ситуация такова, что даже вызов procces.nextTick является дорогим, и его приходится вызывать как можно реже. В связи с чем пришлось пока поставить счетчик и сбрасывать стек с помощью procces.nextTick каждый 1000 раз. Сами понимаете, что это такое себе... Поэтому идеально знать текущий размер стека, чтобы обрубать его при, допустим, 95% заполнении.
var arrayContains = Array.prototype.indexOf ?
function(arr, val) {
return arr.indexOf(val) > -1;
} :
function(arr, val) {
for (var i = 0, len = arr.length; i < len; ++i) {
if (arr[i] === val) {
return true;
}
}
return false;
};
function getCallStackSize() {
var count = 0, fn = arguments.callee, functionsSeen = [fn];
while ( (fn = fn.caller) && !arrayContains(functionsSeen, fn) ) {
functionsSeen.push(fn);
count++;
}
return count;
}
Продвижение своими сайтами как стратегия роста и независимости