[#37875] ERB の仕様 — URABE Shyouhei <s-urabe@...>

みなさまはじめまして。

44 messages 2003/07/15
[#37876] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/15

咳といいます。

[#37877] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/15

mput です。

[#37879] Re: ERB の仕様 — m_seki@... 2003/07/15

[#37883] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/16

mput です。

[#37884] Re: ERB の仕様 — m_seki@... 2003/07/16

[#37888] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/16

mput です。

[#37889] Re: ERB の仕様 — m_seki@... 2003/07/16

[#37890] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/17

mput です。

[#37891] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/19

MoonWolfです。

[#37896] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/20

MoonWolfです。

[#37898] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/20

咳といいます。

[#37900] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/20

MoonWolfです。

[#37901] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/20

咳といいます。

[#37906] control user ID / group ID — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

20 messages 2003/07/20
[#37912] Re: control user ID / group ID — YOKOYAMA Takehiro <tac@...> 2003/07/21

[#37913] Re: control user ID / group ID — Hidetoshi NAGAI <nagai@...> 2003/07/21

永井@知能.九工大です.

[#37916] Re: control user ID / group ID — YOKOYAMA Takehiro <tac@...> 2003/07/21

[#37941] multipart/form-dataのためのcgi.rbの修正 — 堀川 久 <vzw00011@...>

こんにちは。

18 messages 2003/07/22
[#37944] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37945] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[#37948] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37951] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[#37953] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37954] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[ruby-list:37877] Re: ERB の仕様

From: URABE Shyouhei <s-urabe@...>
Date: 2003-07-15 23:15:45 UTC
List: ruby-list #37877
mput です。

On 2003.07.16, at 06:20, Masatoshi SEKI wrote:

>> 私としては tDiary の高速化というお題目もあって、もうちょっとさっぱりし
>> た仕様で軽い ERB になって欲しいと思うのです。
>
> えと、仕様変えて速くするのでしょうか?

すいません、これでは論点がはっきりしませんね。

(1) 個人的には ERB の挙動は複雑だおとおもう
(2) ERB の速度が遅いように感じられる(場合によって数秒待たされるのを遅
     いとみなすかは個人差があるでしょう)
(3) よりスマートな規則に変更したら、速度にも効果があるのではないか

ということでした。速くするために仕様を変えるのはなにやら本末転倒のよう
な気がします。

>> * 先頭が % や %% からはじまる行では、 '<%%' や '%%>' が出現しても '<%'
>>   や '%>' に変換されない
>>
>> というのは、その他の部分と一貫性がなくて混乱の元のように感じますが、い
>> かがでしょう。
>
> うーん。%はRubyスクリプトがそのまま書けることがうれしいので、
> 変換されると困るんじゃないでしょか。

% はともかく %% はスクリプトじゃないんだから、変換してくれなきゃ困る気
がするんです。他の地の文と釣り合いが取れないんじゃないかと。
# みなさんご不満なくお使いですので困ってないのかもしれませんが

> で、おもしろそうな高速化なんですが、事前にsplitで分割するから
> 大きなeRubyスクリプトで遅くなってしまう、という印象ですか??
> オブジェクトをたくさん生成しちゃうからかしら。

じつは String#split はそんなに時間かかってません。 末尾に
   % ruby -e'1024.times{|i| puts "<%=#{i}%>"}' > sample.erb
   % ruby -rprofile -rerb -e'ERB.new(ARGF.read).result' sample.erb
とかやって生成したプロファイルを添付しておきます。

Attachments (1)

profile.txt (2.77 KB, text/plain)
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 48.38    10.42     10.42        1 10420.00 20600.00  ERB::Compiler#compile
 12.26    13.06      2.64    32770     0.08     0.08  String#==
  8.87    14.97      1.91        1  1910.00  2760.00  Array#each
  8.45    16.79      1.82     4096     0.44     0.65  Array#include?
  5.25    17.92      1.13    12296     0.09     0.09  Array#push
  2.88    18.54      0.62        1   620.00   920.00  Kernel.eval
  2.32    19.04      0.50     2051     0.24     0.33  Kernel.===
  2.23    19.52      0.48     6145     0.08     0.08  Array#shift
  1.86    19.92      0.40     3073     0.13     0.13  Module#===
  1.39    20.22      0.30     3073     0.10     0.10  Array#join
  1.35    20.51      0.29     4097     0.07     0.07  NilClass#nil?
  1.02    20.73      0.22     2048     0.11     0.11  String#concat
  0.84    20.91      0.18     2048     0.09     0.09  Kernel.nil?
  0.56    21.03      0.12     1028     0.12     0.12  Kernel.==
  0.56    21.15      0.12     1025     0.12     0.12  Fixnum#>
  0.46    21.25      0.10     1024     0.10     0.10  String#size
  0.42    21.34      0.09     1024     0.09     0.09  String#dump
  0.37    21.42      0.08     1024     0.08     0.08  Fixnum#to_s
  0.32    21.49      0.07     1025     0.07     0.07  Array#pop
  0.28    21.55      0.06        1    60.00    60.00  Profiler__.start_profile
  0.14    21.58      0.03        2    15.00    15.00  String#split
  0.00    21.58      0.00        1     0.00     0.00  ERB::Compiler#prepare_trim_mode
  0.00    21.58      0.00        1     0.00     0.00  -.read
  0.00    21.58      0.00        1     0.00     0.00  ERB#set_eoutvar
  0.00    21.58      0.00        2     0.00     0.00  Array#concat
  0.00    21.58      0.00        1     0.00     0.00  Module#attr
  0.00    21.58      0.00        1     0.00     0.00  Array#size
  0.00    21.58      0.00        3     0.00     0.00  Class#inherited
  0.00    21.58      0.00        1     0.00 20600.00  ERB#initialize
  0.00    21.58      0.00        3     0.00     0.00  Fixnum#==
  0.00    21.58      0.00        1     0.00   920.00  ERB#result
  0.00    21.58      0.00        1     0.00    30.00  ERB::Compiler#pre_compile
  0.00    21.58      0.00        3     0.00     0.00  Module#attr_accessor
  0.00    21.58      0.00        1     0.00 21540.00  #toplevel
  0.00    21.58      0.00        9     0.00     0.00  Module#method_added
  0.00    21.58      0.00        1     0.00     0.00  ERB::Compiler#initialize
  0.00    21.58      0.00        1     0.00     0.00  IO#close
  0.00    21.58      0.00        1     0.00     0.00  Module#module_function
  0.00    21.58      0.00        2     0.00 10300.00  Class#new
  0.00    21.58      0.00        2     0.00     0.00  Module#public

In This Thread