Я работаю над веб-приложением, которое получает данные 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.