[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:14871] Re: Generator

From: "Akinori MUSHA" <knu@...>
Date: 2001-10-03 08:58:06 UTC
List: ruby-dev #14871
At Wed, 3 Oct 2001 12:38:11 +0900,
Shugo Maeda wrote:
> At Thu, 27 Sep 2001 20:28:01 +0900,
> TAKAHASHI Masayoshi <maki@inac.co.jp> wrote:
> > このgenerator、面白いですねー。
> 
> 面白いですね。
> 
> ただ、Rubyのcall/ccは重いので効率がちょっと問題になりますよね。
(snip)

 1..100 vs. 1..1000 になっていたので後者にそろえてみましたが、

	0.82s user 0.12s system 98% cpu 0.960 total
	0.02s user 0.00s system 115% cpu 0.020 total

と二桁近くの差があるのは事実ですね。

 suspendable/resumable function ということで原理的に icon や
Python とやっていることは変わらないはずですが、 Python はすでに
VM 化されているのでさほど遜色なく動くのでしょうね。icon は言語の
基本的な機能として提供しているため最適化しているのだと思います。

> もっとも、これはRubyがVM化されてcall/ccの実装が変われば、改善され
> ると思いますが…。

 Ruby の VM 化には期待が集まりますね。

	http://www.ipa.go.jp/NBP/12nendo/12mito/mdata/12-10h.htm

> >  * SyncEnumerator#eachの途中の段階で、あるイレテータの返す値が
> >    nilだったとき、イテレートが終わったのか、本当に値がnilだった
> >    のかの区別する手段がない
> > 
> > という点が気になりました。
> > でも、どう対応するのがいいんでしょうね? デフォルトを設定できる
> > ようにするとか、n番目のイテレータが終了したかを調べるメソッドを
> > 作るとかでしょうか(どちらも今一つしっくりこないかも)。
> 
> どれかのカーソルに対応する要素がなくなった時点で例外を起こすよう
> なオプションもあると便利かもしれないですね。

 とりあえず SyncEnumerator#end?(i = nil) というのは用意しました。

 例外をあげるというのは、配列のバウンダリエラーも nil で済ます
Ruby としては少し大げさな感じがして躊躇しています。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"

In This Thread

Prev Next