ruby-on-rails-3 – 使用Jbuilder和Rails提高渲染性能3
发布时间:2020-12-16 21:36:32 所属栏目:百科 来源:网络整理
导读:我正在开发的应用程序使用 JSON对象或其集合来响应大多数请求.我们正在使用 Jbuilder构建这些响应.渲染的数据量相当大(在各种嵌套结构中的数千个对象 – 一旦格式化并完全展开,典型响应中有多达一行JSON).根据NewRelic,这种渲染需要大量的时间 – 大约是总请
我正在开发的应用程序使用
JSON对象或其集合来响应大多数请求.我们正在使用
Jbuilder构建这些响应.渲染的数据量相当大(在各种嵌套结构中的数千个对象 – 一旦格式化并完全展开,典型响应中有多达一行JSON).根据NewRelic,这种渲染需要大量的时间 – 大约是总请求时间的1/3.
我正在寻找一些指导,一组提示或其他资源,这将有助于我确保从JBuilder获得最佳性能.如果Jbuilder与RABL或其他类似工具有性能比较,我也很好奇. 编辑:我发现一个GitHub Issue抱怨Jbuilder的表现,但任何人所做的唯一实际建议是’不要使用Jbuilder’.那么实际上他们使用的语言比较强一点,但是Jbuilder为什么这么慢呢,还有什么可以做的,或者同样的任务的其他工具如何比较呢? 解决方法
jbuilder构建一个包含数据的大哈希值,然后使用ActiveSupport :: JSON将其转换为json.有更快的json发射器作为以下微基准显示(确保你已经安装了多个json和yajl-ruby宝石)
require 'benchmark' require 'active_support' require 'multi_json' sample = {menu: { header: "SVG Viewer",items: [ {id: "Open"},{id: "OpenNew",label: "Open New"},nil,{id: "ZoomIn",label: "Zoom In"},{id: "ZoomOut",label: "Zoom Out"},{id: "OriginalView",label: "Original View"},{id: "Quality"},{id: "Pause"},{id: "Mute"},{id: "Find",label: "Find..."},{id: "FindAgain",label: "Find Again"},{id: "Copy"},{id: "CopyAgain",label: "Copy Again"},{id: "CopySVG",label: "Copy SVG"},{id: "ViewSVG",label: "View SVG"},{id: "ViewSource",label: "View Source"},{id: "SaveAs",label: "Save As"},{id: "Help"},{id: "About",label: "About Adobe CVG Viewer..."} ] }} MultiJson.engine = :yajl Benchmark.bmbm(5) do |x| x.report 'activesupport' do 1000.times {ActiveSupport::JSON.encode(sample)} end x.report 'yajl' do 1000.times {MultiJson.encode(sample)} end end 在我的机器上生产
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |