Как можно _know_, какой рендеринг JSON активен в моем приложении Rails 3?

Это прямое продолжение этого вопроса: Каков самый быстрый способ рендеринга json в rails?

Мое приложение выполняет запрос базы данных и передает JSON для обратного вызова JS. Требуется не менее 8 секунд для небольшого набора данных (1 МБ) и более 20 для большого (3,5 МБ). Это в основном собирается убить мое приложение как идею. Мои пользователи не собираются мириться с таким ожиданием.

Я читал о multi_json и oj и yajl, и я думаю, что я их установил, но ни один из способов, которыми я пытался активировать различные драгоценные камни в моем Gemfile, не показывает улучшения в сериализации времени. Как я могу доказать, что я использую один над другим, чтобы сравнить результаты между ними? Я не могу найти способ вывода (в журнал отладки Rails или консоль JS в браузере), которая, возможно, использовалась для фактического вызова "render: json = > @data".

Ответы

Ответ 1

Вместо того, чтобы возиться с вашим контроллером, лучше использовать консоль Rails, например:

$ rails console
Loading development environment (Rails 3.2.8)
1.8.7 :001 > MultiJson.engine
 => MultiJson::Adapters::JsonGem 

Вы можете напрямую взаимодействовать с стеком Rails.

Ответ 2

Наконец-то я понял, что могу сделать "render: text = > MultiJson.engine" в моем контроллере. Это дало "MultiJson:: Engines:: Oj".

Это подтверждает, что я уже использую якобы самую быструю библиотеку JSON, и я могу быть приглашен. Я предполагаю, что я попытаюсь вернуть чистый текст через контроллер (который занимает 2 секунды по сравнению с 8) и посмотреть, как быстро программа для преобразования этого в хэш займет...