[#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
咳といいます。
[#37911] Re: ERB の仕様
— MoonWolf <moonwolf@...>
2003/07/21
Masatoshi SEKI wrote:
[#37902] Re: ERB の仕様
— MoonWolf <moonwolf@...>
2003/07/20
MoonWolfです。
[#37903] Re: ERB の仕様
— Masatoshi SEKI <m_seki@...>
2003/07/20
咳といいます。
[#37904] Re: ERB の仕様
— MoonWolf <moonwolf@...>
2003/07/20
Masatoshi SEKI wrote:
[#37905] Re: ERB の仕様
— MoonWolf <moonwolf@...>
2003/07/20
MoonWolfです。
[#37966] Re: ERB の仕様
— MoonWolf <moonwolf@...>
2003/07/23
MoonWolfです。
[#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
[#37923] Re: control user ID / group ID
— Hidetoshi NAGAI <nagai@...>
2003/07/21
永井@知能.九工大です.
[#37925] Re: control user ID / group ID
— Takahiro Kambe <taca@...>
2003/07/21
In message <20030722.051007.74738624.nagai@ai.kyutech.ac.jp>
[#37936] __FILE__ in mswin32 — OOTANI TAKASHI <otn@...5.so-net.ne.jp>
大谷と申します。
5 messages
2003/07/22
[#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
なかだです。
[#37955] Re: multipart/form-dataのためのcgi.rbの修正
— matz@... (Yukihiro Matsumoto)
2003/07/23
まつもと ゆきひろです
[#37956] Re: multipart/form-dataのためのcgi.rbの修正
— matz@... (Yukihiro Matsumoto)
2003/07/23
まつもと ゆきひろです
[#37958] Re: multipart/form-dataのためのcgi.rbの修正
— nobu.nakada@...
2003/07/23
なかだです。
[#37960] Re: multipart/form-dataのためのcgi.rbの修正
— matz@... (Yukihiro Matsumoto)
2003/07/23
まつもと ゆきひろです
[#37972] rubyw とは? — tachyon@...
みなさま、
6 messages
2003/07/27
[#37978] net/ftp.rb — TAKAISHI Hayato <rio-t@...>
こんにちは、高石です。
6 messages
2003/07/27
[#37998] o_dbm for qdbm — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
8 messages
2003/07/31
[#37999] Re: o_dbm for qdbm
— matz@... (Yukihiro Matsumoto)
2003/07/31
まつもと ゆきひろです
[ruby-list:37882] Re: ERB の仕様
From:
UENO Katsuhiro <unnie@...>
Date:
2003-07-16 03:25:06 UTC
List:
ruby-list #37882
うえのです。
On Wed, 16 Jul 2003 10:52:00 +0900
Shinya Kawaji <kawaji@hoppeta.com> wrote:
> > 1.2MBくらいの素朴なeRubyスクリプトを準備して試したのですが、
> > ruby1.6.8とruby1.8.0だと全く結果が違くて驚きました。
>
> 私も高速化に興味があるのですが(興味があるだけで自分で何が出来るのかは
> まだ解らないのですが)、もし上記の「1.2MBくらいの素朴なeRubyスクリプト」
以前 eRuby-1.0.3 + Ruby-1.6.8 で Web アプリケーションを書いたとき
あまりにも eRuby が遅かったので (かといって 1.8 に上げることは
できなかったので)、場当たり的にこんな修正をして凌いだことがあります。
--- eruby_main.c.orig Mon Oct 15 13:55:40 2001
+++ eruby_main.c Sat Mar 1 22:36:51 2003
@@ -376,21 +376,47 @@
}
}
+
+static struct {
+ char *buf;
+ int len;
+ int max;
+} eruby_defout;
+
static VALUE defout_write(VALUE self, VALUE str)
{
str = rb_obj_as_string(str);
- rb_str_cat(self, RSTRING(str)->ptr, RSTRING(str)->len);
+ if (eruby_defout.len + RSTRING(str)->len > eruby_defout.max) {
+ while (eruby_defout.len + RSTRING(str)->len > eruby_defout.max)
+ eruby_defout.max *= 2;
+ REALLOC_N(eruby_defout.buf, char, eruby_defout.max);
+ }
+ memcpy(eruby_defout.buf + eruby_defout.len,
+ RSTRING(str)->ptr, RSTRING(str)->len);
+ eruby_defout.len += RSTRING(str)->len;
return Qnil;
}
static VALUE defout_cancel(VALUE self)
{
- if (RSTRING(self)->len == 0) return Qnil;
- RSTRING(self)->len = 0;
- RSTRING(self)->ptr[0] = '\0';
+ eruby_defout.len = 0;
return Qnil;
}
+static VALUE defout_new()
+{
+ eruby_defout.max = 102400;
+ eruby_defout.len = 0;
+ eruby_defout.buf = ALLOC_N(char, eruby_defout.max);
+ return Data_Wrap_Struct(rb_cObject, NULL, NULL, &eruby_defout);
+}
+
+static void defout_free()
+{
+ free(eruby_defout.buf);
+}
+
+
static int guess_mode()
{
if (getenv("GATEWAY_INTERFACE") == NULL) {
@@ -438,7 +464,7 @@
if (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)
rb_set_safe_level(1);
- rb_defout = rb_str_new("", 0);
+ rb_defout = defout_new();
rb_io_binmode(rb_stdout); /* for mswin32 */
rb_define_singleton_method(rb_defout, "write", defout_write, 1);
rb_define_singleton_method(rb_defout, "cancel", defout_cancel, 0);
@@ -545,8 +571,8 @@
if (eruby_mode == MODE_FILTER && (RTEST(ruby_debug) || RTEST(ruby_verbose))) {
print_generated_code(stderr, code, 0);
}
- out = RSTRING(rb_defout)->ptr;
- nout = RSTRING(rb_defout)->len;
+ out = eruby_defout.buf;
+ nout = eruby_defout.len;
if (!eruby_noheader &&
(eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)) {
if (eruby_mode == MODE_NPHCGI)
@@ -558,6 +584,7 @@
}
fwrite(out, nout, 1, stdout);
fflush(stdout);
+ defout_free();
}
int main(int argc, char **argv)
-- ---- - - - -- -
うえの かつひろ <unnie@blue.sky.or.jp>