17

这是这个问题的直接后续:在 rails 中渲染 json 的最快方法是什么

我的应用程序执行数据库查询并呈现为 JSON 以进行 JS 回调。小型 (1 MB) 数据集至少需要 8 秒,而大型 (3.5 MB) 数据集则需要 20 秒。这基本上会扼杀我的应用程序作为一个想法。我的用户不会忍受这种等待。

我已经阅读了关于 multi_json 和 oj 和 yajl 的信息,并且我认为我已经安装了它们,但是我尝试激活 Gemfile 中各种 gem 的所有方法都没有显示出序列化时间的任何改进。我如何证明我正在使用另一种,以便比较它们之间的结果?我找不到任何输出方式(到 Rails 调试日志或浏览器中的 JS 控制台)哪个库可能已用于实际的 'render :json => @data' 调用。

4

2 回答 2

27

与其摆弄控制器,更好的方法是使用 Rails 控制台,如下所示:

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

您可以通过这种方式直接与 Rails 堆栈进行交互。

于 2012-10-01T23:33:20.680 回答
4

我终于发现我可以在我的控制器中执行“render :text => MultiJson.engine”。这产生了“MultiJson::Engines::Oj”。

它确认我已经在使用所谓的最快的 JSON 库,我可能会被淹没。我想我会尝试通过控制器返回纯文本(与 8 秒相比需要 2 秒),并查看将其转换为哈希的例程需要多快......

于 2012-05-14T20:19:03.210 回答