0

Rails 3に実装された REST API があり、yajlバックエンド forを使用していjsonます。現在、約 20 行以上をシリアル化する場合jsonよりもはるかに高速に応答を生成しています。xml

次に考えたのは、すでにforを使用しているlibxmlように、レール 3 にも同様の C ライブラリ ドロップインが必要だということでした。to_xmllibyajlto_json

今日まで、私はrti/FastXmlプロジェクトだけを見つけました: https://github.com/rti/FastXml
これは私が欲しいものだと主張していますが、2010 年初頭から更新されておらず、目に見えるフォークもありません。

FasterXmlがrails 3で動作するかどうかを知っている人はいますか?

さらに重要なことに、Rails 3 を高速化する他の方法を知っている人はいますrender :xml => @search_resultsか?

助けてくれてありがとう。

4

1 に答える 1

0

ab: XmlMini_LibXMLXmlMini_Nokogirifast_xsを介して、いくつかのレール 3 設定オプションのテスト

次のリクエストは、ネストされた 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 (レール 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_のこぎり)

                  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 に答える