Я работаю над веб-приложением, которое получает данные JSON с именами свойств в верхнем регистре. Мне нужно, чтобы имена этих свойств были в нижнем регистре, поэтому я использую функцию для рекурсивного цикла по объекту JSON и преобразования их в нижний регистр.
Проблема в том, что мои ответы JSON могут быть очень большими. Я хочу, чтобы функция работала хорошо, даже если ей нужно обрабатывать JSON с 60000 именами свойств и различными уровнями вложенности.
Функция нижнего регистра:
FN = function (obj)
{var ret = null;
if (typeof(obj) == "string" || typeof(obj) == "number")
return obj;
else if (obj.push)
ret = [];
else
ret = {};
for (var key in obj)
ret[String(key).toLowerCase()] = FN(obj[key]);
return ret;
};
И я провожу несколько тестов здесь: http://jsfiddle.net/emw89/7/
Вышеуказанные тестовые часы показывают ~ 570 мсек на моей машине.
Могу ли я что-нибудь сделать для повышения производительности этой функции?
Редактировать: Я закрыл свой IE, повторно открыл IE и снова запустил тест jsfiddle - теперь он занимает у меня ~ 180 мс. До этого момента мой IE был открыт пару дней подряд, так что, возможно, именно это и вызывало такую низкую производительность. В любом случае, мне все еще интересно, есть ли способ еще больше оптимизировать эту функцию. Каждый раз, когда дополнительное время, потраченное на обработку JSON, напрямую добавляется к истекшему времени каждого запроса AJAX.