[#139] ruby 0.97 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/13
[#145] Re: The black face. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/14
[#182] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:178] Re: DOS port
1 message
1996/02/20
[#184] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:181] Re: DOS port
1 message
1996/02/20
[#185] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/20
[#196] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/26
[#198] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:197] Re: DOS port
1 message
1996/02/26
[#201] Re: ruby for JPower — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/26
[ruby-list:114] iterator benchmark
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-02-02 03:10:51 UTC
List:
ruby-list #114
まつもと ゆきひろ@トヨタケーラムです.
ちょっと間違っていました.
In message "[ruby-list:108] Re: None"
on 96/02/01, Yukihiro Matsumoto <matz@caelum.co.jp> writes:
|してます.イテレータの方はsetjmp/longjmpでループを作っている
|形になりますね.今ちょっと実験したらイテレータの方が2倍くら
|い遅いみたいです.
この実験が間違っていました.やり直したところ面白い結果が出ま
した.
(1) イテレータは遅くない
私の机の上にあるSPARC station IPXで,以下のスクリプトで
実験しました(空のループを10000回).
time ruby -e 'i=0; while i<10000; i+=1 end'
0.6 real 0.5 user 0.0 sys
time ruby -e 'for i in 0..10000; end'
0.8 real 0.2 user 0.6 sys
time ruby -e '0.upto(10000){}'
0.8 real 0.2 user 0.6 sys
(2) マシンによってはイテレータの方が速い
私のもうひとつのマシン(i486DX4 75MHz, Linux)で実験して
みました.
time ruby -e 'i=0; while i<10000; i+=1 end'
2.9 real 2.5 user 0.2 sys
time ruby -e 'for i in 0..10000; end'
1.2 real 0.8 user 0.2 sys
time ruby -e '0.upto(10000){}'
1.1 real 0.6 user 0.2 sys
setjmp/longjmpのコストの違いでしょうか.イテレータの方
がかなり速いです.いや,whileが遅すぎるのか.
(3) いずれにしてもpythonに負けない.
Sun IPX
time python -c 'i=0^Jwhile i<10000: i=i+1'
1.1 real 1.0 user 0.0 sys
time python -c 'for i in range(1,10000):pass'
0.7 real 0.6 user 0.0 sys
i486DX4
time python -c 'i=0^Jwhile i<10000: i=i+1'
5.7 real 5.2 user 0.2 sys
time python -c 'for i in range(1,10000):pass'
3.4 real 2.7 user 0.3 sys
実際に使っているとIPXより486マシンの方が速いと思うことも多い
のですが(コンパイルなどは確かに速い),こんなに差が出るとは意
外でした.whileなんか2倍近く遅いですからね.
gprofをかけてみる必要があるかも知れませんね.SunだとQuantify
があるから調べやすいんですけど.
まつもと ゆきひろ /:|)