0

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

我的下一个想法是,rail 3 必须有一个类似的 C 库插件,它将使用libxml或类似 for to_xml,就像我们已经在使用libyajlfor一样to_json

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

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

更重要的是,有没有人知道让 rails 3 更快的其他方法render :xml => @search_results

非常感谢您的帮助。

4

1 回答 1

0

测试几个 rails 3 配置选项,通过ab: XmlMini_LibXML, XmlMini_Nokogiri, fast_xs.

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

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

总结:
添加 gemfast_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
    
于 2011-05-05T03:52:18.573 回答