RailsのXMLのレンダリングが遅い。 これは、String#to_xsが遅いのが原因らしい。

そこで、これを高速化するためのライブラリfast_xsを使うと、 XMLのレンダリングが速くなります (手元の環境で試したところでは、若干速くなったような気がしました。)

Rails-2.0以降では、fast_xsがインストールされている場合に、 自動的にそれを利用するようになっています。

[Changeset 7774] Reference current fast_xs URL

インストールは、いつものようにsudo gem install fast_xsでOK。

See Also

posted by Png genki on Mon 21 Jul 2008 at 08:52

masuidriveさんとmemcachedを落とすとエラーが出るのが困るね、という話していて、 fiveruns-memcache-client を使うと解決しそうという結論に至ったので、ためしに使ってみました。

fiveruns-memcache-clientはGitHubで公開されているので、GitHubからGemをインストールします。

   1  $ sudo gem install fiveruns-memcache-client

つづいて、Railsの環境設定をします。

config/environment.rb

   1  Rails::Initializer.run do |config|
   2    (..snip..)
   3    config.gem 'fiveruns-memcache-client',
   4      :lib => 'memcache',
   5      :version => '>1.5.0',
   6      :source => 'http://gems.github.com'
   7    gem 'fiveruns-memcache-client'
   8  end

gemメソッドをもう一回呼ぶ必要があるのが若干冗長ですね。 これを呼んでおかないと、手元の環境ではオリジナルの memcache-clientがloadされてしまいました。

さて、あとはデプロイするだけなのですが、 残念ながらfiveruns-memcache-clientを利用しただけでは、 memcachedが落ちている場合にエラーを出さずにcacheを無視してレンダリングするというような挙動はしない模様。 複数のMemcachedを立ち上げておいて、どれかが落ちてる場合は別なサーバにつなぎにいくようにはなるみたいですね。

posted by Png genki on Mon 21 Jul 2008 at 03:42

以前Hash#sliceが欲しいと書いたことがありましたが、 Rails-2.1のActiveSupportがHash#sliceを実装したようです。

しかし、以前紹介した実装ではValueの配列を返すようになっていたのですが、 Rails-2.1のHash#sliceは以下のような挙動をします。

   1  >> {1 => 2, 2 => 3}.slice(1)
   2  => {1=>2}

そう、以前紹介した Hash#only と同じですね。

posted by Png genki on Mon 21 Jul 2008 at 02:07
Contents
Rails-2.0以降でXMLのレンダリングを速くする方法
memcache-clientが落ちている時にエラーを出さないようにする方法を求めて
Rails-2.1からHash#sliceが使えるようになった模様
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ