dak ブログ

プログラミング、サーバーの設定のなどの備忘録。レゴの写真も。

rubyのCGIExtでのURLデコード

2012-01-15 22:42:06 | ruby
rubyでWebサーバのアクセスログを分析するのに、CGI.parse でリクエストパラメータをデコードするプログラムを書きましたが、CGI.parse は分析自体のプログラムよりも CGI.parse に時間がかかっていました。

そこで、「ruby CGI 遅い」で検索してみたところ、CGIExt が見つかったので、こちらを利用してみたところ、パラメータのデコードにかかる時間が大幅に短縮されました。
require 'cgi' の後に require 'cgiext' とするだけでよいのもプログラムの修正が少なくて便利です。

http://cgiext.rubyforge.org/

■CGIを利用した場合
●プログラム
#!/usr/local/bin/ruby

require 'cgi'
require 'time'

# HIRAGANA=にほん&KATAKANA=ニホン&KANJI=日本
paramstr = 'HIRAGANA=%e3%81%ab%e3%81%bb%e3%82%93&KATAKANA=%e3%83%8b%e3%83%9b%e3\
%83%b3&KANJI=%e6%97%a5%e6%9c%ac'

start_time = Time.now

1.upto(10000) do |i|
CGI.parse(paramstr)
end

end_time = Time.now
print("time: #{end_time - start_time}\n")

●実行結果
time: 0.466363


■CGIExtを利用した場合
●プログラム
#!/usr/local/bin/ruby

require 'cgi'
require 'cgiext'
require 'time'

# HIRAGANA=にほん&KATAKANA=ニホン&KANJI=日本
paramstr = 'HIRAGANA=%e3%81%ab%e3%81%bb%e3%82%93&KATAKANA=%e3%83%8b%e3%83%9b%e3\
%83%b3&KANJI=%e6%97%a5%e6%9c%ac'

start_time = Time.now

1.upto(10000) do |i|
CGI.parse(paramstr)
end

end_time = Time.now
print("time: #{end_time - start_time}\n")

●実行結果
time: 0.070527




ジャンル:
ウェブログ
コメント (0) |  トラックバック (0) |  この記事についてブログを書く
Messenger この記事をはてなブックマークに追加 mixiチェック シェア
« mysqlのnow()の更... | トップ | javascriptでグラ... »

コメント

コメントはありません。

コメントを投稿


コメント利用規約に同意の上コメント投稿を行ってください。
※文字化け等の原因になりますので、顔文字の利用はお控えください。
下記数字4桁を入力し、投稿ボタンを押してください。この数字を読み取っていただくことで自動化されたプログラムによる投稿でないことを確認させていただいております。
数字4桁

トラックバック

この記事のトラックバック  Ping-URL
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。

あわせて読む