rti/FastXml或类似的东西是否与rails 3一起使用以加快xml渲染速度



我们在rails 3中实现了一个REST api,它使用yajl后端进行json。当前,当序列化超过 20 行时,它生成json响应的速度明显快于xml

我的下一个想法是,轨道 3 必须有一个类似的 C 库插入,它将使用 libxml 或类似的 to_xml ,就像我们已经将 libyajl 用于to_json一样。

到目前为止,我只找到了 rti/FastXml 项目:https://github.com/rti/FastXml
它声称是我想要的,但自 2010 年初以来一直没有更新,也没有可见的分叉。

有谁知道FasterXml是否适用于rails 3

更重要的是,有谁知道任何其他方法可以让 rails 3 做更快的render :xml => @search_results

非常感谢任何帮助。

几个轨道的测试 3 个配置选项,通过abXmlMini_LibXMLXmlMini_Nokogirifast_xs

以下请求以嵌套 ruby 哈希的形式返回大约 50k 个搜索结果,数据来自 memcached,因此这里的时差是将结果编码为 xml 或 json。

ab -n 100 -c 5 "http://DOMAIN/PATH.(xml|json)"

总结:
添加 gem fast_xs似乎可以将 XML 时间缩短一半,其他方法则没有效果。

  1. JSON (yajl)

                  min  mean[+/-sd] median   max
    Connect:        0    1   2.7      0      20
    Processing:   159  453 188.6    387     994
    Waiting:      155  444 188.4    380     992
    Total:        160  454 188.6    387     995
    
  2. XML(rails 3.0.3 默认值)

                  min  mean[+/-sd] median   max
    Connect:        0    1   2.6      0      10
    Processing:   377 1256 337.5   1260    2612
    Waiting:      367 1233 335.7   1230    2597
    Total:        378 1258 337.3   1260    2613
    
  3. XML (XmlMini_LibXML)

                  min  mean[+/-sd] median   max
    Connect:        0    1   2.3      0      13
    Processing:   479 1217 233.8   1251    1830
    Waiting:      473 1188 235.3   1229    1826
    Total:        479 1218 234.0   1252    1835
    
  4. XML (XmlMini_Nokogiri)

                  min  mean[+/-sd] median   max
    Connect:        0    1   1.8      0      10
    Processing:   701 1211 228.1   1259    1654
    Waiting:      695 1197 224.8   1251    1650
    Total:        701 1212 228.4   1261    1655
    
  5. XML(默认值 + fast_xs)

                  min  mean[+/-sd] median   max
    Connect:        0    1   1.9      0      10
    Processing:   243  656 233.1    702    1288
    Waiting:      238  627 236.7    585    1286
    Total:        250  657 233.3    702    1289
    
  6. XML (XmlMini_LibXML + fast_xs)

                  min  mean[+/-sd] median   max
    Connect:        0    1   1.8      0      10
    Processing:   256  685 222.6    704    1138
    Waiting:      234  650 229.5    661    1132
    Total:        257  686 222.7    705    1138
    
  7. XML (XmlMini_Nokogiri + fast_xs)

                  min  mean[+/-sd] median   max
    Connect:        0    2   3.9      0      23
    Processing:   210  657 224.7    714    1118
    Waiting:      206  610 229.9    607    1094
    Total:        210  659 225.0    716    1119
    
  8. JSON (yajl + fast_xs)

                  min  mean[+/-sd] median   max
    Connect:        0    1   1.8      0      11
    Processing:   153  442 197.1    396    1129
    Waiting:      148  435 196.3    391    1124
    Total:        153  442 197.3    398    1136
    

相关内容

  • 没有找到相关文章

最新更新