[#19998] benchmark.rb — gotoken@... (GOTO Kentaro)
ごとけんです
8 messages
2000/01/01
[#20003] REQ: String#gsub — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
越水です。
10 messages
2000/01/01
[#20018] ruby-1.4.3.tar.gz の日付 — Tadashige Morii <m_tada@...>
森井です。
6 messages
2000/01/03
[#20057] mirror.rb in Ruby Book — Takashi SATO <turmite@...>
佐藤と申します。
6 messages
2000/01/05
[#20059] 改行がリダイレクトされない ruby1.4.3cygwin? — 中村暁史 Nakamura Akifumi <BXQ04723@...>
4 messages
2000/01/05
[#20077] Range expansion? — Akinori MUSHA aka knu <knu@...>
knuです。以下の動作は仕様なのでしょうか?
6 messages
2000/01/06
[#20083] non-block IO with TCPSocket — dn <daisuke@...>
初投稿の中村と申します。よろしくお願いします。
19 messages
2000/01/06
[#20084] Re: non-block IO with TCPSocket
— Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
2000/01/06
越水です。
[#20091] Re: non-block IO with TCPSocket
— とみたまさひろ <tommy@...>
2000/01/06
とみたです。
[#20099] Re: non-block IO with TCPSocket
— matz@... (Yukihiro Matsumoto)
2000/01/06
まつもと ゆきひろです
[#20106] Re: non-block IO with TCPSocket
— dn <daisuke@...>
2000/01/07
なかむらです。たくさんのアドバイス、ありがとうございます。
[#20118] media watch 2000.01.08 — Noritsugu Nakamura <nnakamur@...>
6 messages
2000/01/08
[#20120] タブの出力について — 鮎川夏生 <natuki@...>
14 messages
2000/01/08
[#20133] おききしたーいでーす — akimaru <akimaru@...>
17 messages
2000/01/09
[#20138] Re: おききしたーいでーす
— akimaru <akimaru@...>
2000/01/09
[#20147] REMOTE_HOST (Re: おききしたーいでーす)
— Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
2000/01/09
akimaru <akimaru@po.kumagaya.or.jp> wrote:
[#20158] Re: REMOTE_HOST (Re: おききしたーいでーす)
— matz@... (Yukihiro Matsumoto)
2000/01/10
まつもと ゆきひろです
[#20145] BUG? Parse Error and and — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
越水です。
5 messages
2000/01/09
[#20175] class Polynomial — "K.Kodama" <kdm@...>
児玉@神戸高専です.
12 messages
2000/01/12
[#20223] Re: class Polynomial
— Masaki Suketa<CQN02273@...>
2000/01/15
助田です.
[#20176] Re: Complex#divmod — Masato KIYAMA <masato@...>
まさと@広島市立大です.
7 messages
2000/01/12
[#20178] [Gtk 0.22] Gtk::DrawingArea cannot pack in Gtk::VBox — h-isikaw@...
いしかわ@NIMSです
4 messages
2000/01/12
[#20187] Hash#index, Hash#indexes — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
indexesってindexの複数の値を返すバージョンかと思ってしまったのですが。
6 messages
2000/01/12
[#20211] %Ruby — Shugo Maeda <shugo@...>
前田です。
7 messages
2000/01/14
[#20215] racc debianized — akira yamada / やまだあきら <akira@...>
11 messages
2000/01/14
[#20235] simple-chat-server.rb don't work on lynx — M_HANA <M_HANA@...0.sapporo-soft.ac.jp>
タイトル間違えました。もう一度送ります。
11 messages
2000/01/17
[#20268] Re: simple-chat-server.rb don't work on lynx
— Wakou Aoyama <wakou@...>
2000/01/18
青山です。
[#20269] Re: simple-chat-server.rb don't work on lynx
— gotoken@... (GOTO Kentaro)
2000/01/18
ごとけんです
[#20237] Ruby/Tk multi interpreter — nagai@...
永井@知能.九工大です.
21 messages
2000/01/17
[#20242] Re: Ruby/Tk multi interpreter
— nagai@...
2000/01/17
永井@知能.九工大です.
[#20248] Re: Ruby/Tk multi interpreter
— Hideto ISHIBASHI <s34204@...>
2000/01/17
石橋秀仁です。
[#20254] Re: Ruby/Tk multi interpreter
— nagai@...
2000/01/18
永井@知能.九工大です.
[#20271] Re: Ruby/Tk multi interpreter
— Hideto ISHIBASHI <s34204@...>
2000/01/18
石橋秀仁です。
[#20272] Re: Ruby/Tk multi interpreter
— nagai@...
2000/01/19
永井@知能.九工大です.
[#20275] Re: Ruby/Tk multi interpreter
— Hideto ISHIBASHI <s34204@...>
2000/01/19
石橋秀仁です。
[#20276] Re: Ruby/Tk multi interpreter
— matz@... (Yukihiro Matsumoto)
2000/01/19
まつもと ゆきひろです
[#20282] Re: Ruby/Tk multi interpreter
— nagai@...
2000/01/19
永井@知能.九工大です.
[#20283] Re: Ruby/Tk multi interpreter
— matz@... (Yukihiro Matsumoto)
2000/01/19
まつもと ゆきひろです
[#20285] Re: Ruby/Tk multi interpreter
— Koji Arai <JCA02266@...>
2000/01/19
新井です。
[#20243] (rd2) nl in Japanese chars — gotoken@... (GOTO Kentaro)
ごとけんです
9 messages
2000/01/17
[#20244] Re: (rd2) nl in Japanese chars
— Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
2000/01/17
Toshです。
[#20245] Re: (rd2) nl in Japanese chars
— gotoken@... (GOTO Kentaro)
2000/01/17
ごとけんです
[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>
初めまして、片岡@KLUGと申します。
18 messages
2000/01/17
[#20252] Re: FTP.open err for Windows95
— "NAKAMURA, Hiroshi" <nakahiro@...>
2000/01/18
なひです.
[#20315] Re: FTP.open err for Windows95
— "Y Kataoka" <kataoka@...>
2000/01/21
片岡@KLUGです。
[#20316] ftplib.rb (Re: Re: FTP.open err for Windows95)
— matz@... (Yukihiro Matsumoto)
2000/01/21
まつもと ゆきひろです
[#20317] Re: ftplib.rb (Re: Re: FTP.open err for Windows95)
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/01/21
わたなべです.
[#20321] Re: ftplib.rb (Re: Re: FTP.open err for Windows95)
— matz@... (Yukihiro Matsumoto)
2000/01/21
まつもと ゆきひろです
[#20333] Re: ftplib.rb (Re: Re: FTP.open err for Windows95)
— Wakou Aoyama <wakou@...>
2000/01/21
青山です。
[#20310] ワイルドカード有りのファイルの存在を調べたいのですが — 関口久之 <sekiguci@...>
関口です。いつもお世話になっております。
6 messages
2000/01/21
[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>
はじめまして、こおりやまです。
19 messages
2000/01/23
[#20362] Re: How to build ruby(current) with cygwin
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/01/24
わたなべです.
[#20422] Re: How to build ruby(current) with cygwin
— Masaki Suketa<CQN02273@...>
2000/01/29
Win32OLE の作者の助田です.
[#20430] Re: あ、 GUI ビルダだ
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/01/30
[#20431] Re: あ、 GUI ビルダだ
— NISHIKAWA <nyasu@...3web.ne.jp>
2000/01/30
こんばんは。にゃす@VisualuRuby計画(仮称) です。
[#20503] Re: あ、 GUI ビルダだ
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/02/05
[#20344] E-mail アドレスの確認・ DNS の MX など — ogino@...
荻野といいます。以前に挫折した組なのですが、Ruby本がでてから再度挑戦を
8 messages
2000/01/23
[#20350] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
6 messages
2000/01/23
[#20369] divmod() — Yasushi Abe <yasushi@...>
阿部です。
12 messages
2000/01/25
[#20385] Re: class Polynomial — Toyofuku <toyofuku@...>
豊福です。
6 messages
2000/01/25
[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
15 messages
2000/01/26
[#20402] Re: ruby-1.4.3 port to HPUX 11.00
— kjana@... (YANAGAWA Kazuhisa)
2000/01/27
In message <E12DWT5-0000AT-00@ev.netlab.co.jp>
[#20403] Re: ruby-1.4.3 port to HPUX 11.00
— YAMASHITA Junji(山下 純司) <ys_jyunji@...>
2000/01/27
山下 純司です。
[#20409] Ruby/Gtk のバージョンを取得したい — dellin <ogu@...>
こんxxは。dellinです。
9 messages
2000/01/28
[#20411] Re: Ruby/Gtk のバージョンを取得したい
— Hiroshi IGARASHI <igarashi@...>
2000/01/28
いがらしです。
[#20412] Re: Ruby/Gtk のバージョンを取得したい
— Hironori Oguma <ogu@...>
2000/01/28
dellinです。
[#20414] 3 桁毎にカンマを入れる — 堀川 久 <vzw00011@...>
こんにちは。
10 messages
2000/01/28
[ruby-list:19998] benchmark.rb
From:
gotoken@... (GOTO Kentaro)
Date:
2000-01-01 01:18:23 UTC
List:
ruby-list #19998
ごとけんです
In message "[ruby-list:19997] Re: about for-in"
on 00/01/01, Tomoyuki Kosimizu <greentea@fa2.so-net.ne.jp> writes:
>t1 = Time.now
[...]
>t2 = Time.now
>
>puts(t2 - t1)
こおいう測定は僕もよくやるので、時間の計測を簡便に行うための
ブツを書いてみました。
% cat hoge.rb
require "benchmark"
include Benchmark
n = ARGV[0].to_i.nonzero? || 50000
benchmark(" " + CAPTION,
"for: " + FMTSTR,
"times: " + FMTSTR,
"upto: " + FMTSTR) do
[
measure{for i in 1..n; a = "1"; end}, # Benchmark::measure
measure{n.times do ; a = "1"; end},
measure{1.upto(n) do ; a = "1"; end}
]
end
% ruby hoge.rb
user system total real
for: 1.016667 0.000000 1.016667 ( 0.504279)
times: 1.433333 0.000000 1.433333 ( 0.680590)
upto: 1.466667 0.000000 1.466667 ( 0.688725)
%
なお、benchmark の引数は省略可能です。改良は大歓迎 :-)
てなわけで、今年もよろしくなのです。
-- gotoken
Attachments (1)
benchmark.rb
(3.14 KB, text/x-ruby)
# benchmark.rb
#
# chagelog
# 01 Jan 2000: first release (gotoken@notwork.org)
module Benchmark
def realtime(&blk)
Benchmark::measure(&blk).real
end
def benchmark(caption = "", *fmt, &blk)
raise ArgumentError, "no block" unless iterator?
report(caption, *fmt, &blk)
end
def measure
t0, r0 = Time.times, Time.now
yield
t1, r1 = Time.times, Time.now
Benchmark::Tms.new(t1.utime - t0.utime,
t1.stime - t0.stime,
t1.cutime - t0.cutime,
t1.cstime - t0.cstime,
r1.to_f - r0.to_f)
end
def report(*args)
if iterator?
print args.shift
tms = yield
tms.each{|t|
print t.format(fmt = args.shift)
}
else
print Benchmark::CAPTION
args.each{|t|
print t
}
end
end
module_function :measure, :realtime, :report
class Tms
CAPTION = " user system total real\n"
FMTSTR = "%10.6u %10.6y %10.6t %10.6r\n"
attr_reader :utime, :stime, :cutime, :cstime, :real, :total
def initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0)
@utime, @stime, @cutime, @cstime, @real = u, s, cu, cs, real
@total = @utime + @stime + @cutime + @cstime
end
def add(&blk)
self + Benchmark::measure(&blk)
end
def add!
t = Benchmark::measure(&blk)
@utime = utime + t.utime
@stime = stime + t.stime
@cutime = cutime + t.cutime
@cstime = cstime + t.cstime
@real = real + t.real
self
end
def +(x); memberwise(:+, x) end
def -(x); memberwise(:-, x) end
def *(x); memberwise(:*, x) end
def /(x); memberwise(:/, x) end
def format(arg0 = nil,*args)
fmtstr = arg0 ? arg0 : Benchmark::Tms::FMTSTR.dup
fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
fmtstr.gsub!(/(%[-+\.\d]*)y/){"#{$1}f" % stime}
fmtstr.gsub!(/(%[-+\.\d]*)U/){"#{$1}f" % cutime}
fmtstr.gsub!(/(%[-+\.\d]*)Y/){"#{$1}f" % cstime}
fmtstr.gsub!(/(%[-+\.\d]*)t/){"#{$1}f" % total}
fmtstr.gsub!(/(%[-+\.\d]*)r/){"(#{$1}f)" % real}
arg0 ? Kernel::format(fmtstr, *args) : fmtstr
end
def to_s
format
end
def to_a
[@utime, @stime, @cutime, @cstime, @real]
end
protected
def memberwise(op, x)
case x
when Benchmark::Tms
Benchmark::Tms.new(utime.__send__(op, x.utime),
stime.__send__(op, x.stime),
cutime.__send__(op, x.cutime),
cstime.__send__(op, x.cstime),
real.__send__(op, x.real)
)
else
Benchmark::Tms.new(utime.__send__(op, x),
stime.__send__(op, x),
cutime.__send__(op, x),
cstime.__send__(op, x),
real.__send__(op, x)
)
end
end
end
CAPTION = Benchmark::Tms::CAPTION
FMTSTR = Benchmark::Tms::FMTSTR
end
if __FILE__ == $0
include Benchmark
n = ARGV[0].to_i.nonzero? || 50000
puts %Q([#{n} times iterations of `a = "1"'])
benchmark(" " + CAPTION,
"for: " + FMTSTR,
"times: " + FMTSTR,
"upto: " + FMTSTR) do
[
measure{for i in 1..n; a = "1"; end}, # Benchmark::measure
measure{n.times do ; a = "1"; end},
measure{1.upto(n) do ; a = "1"; end}
]
end
end