Оптимизация кода JavaScript, который использует имена свойств JSON в нижнем регистре

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

7
задан Elliot B. 23 February 2012 в 21:59
поделиться