From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-08-26T23:20:28+09:00 Subject: [ruby-dev:18082] Re: new scope-in-state [Re: import-module (Re: Re: scope-in-state)] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev:18032] the message: "[ruby-dev:18032] Re: new scope-in-state [Re: import-module (Re: Re: scope-in-state)]", on Aug/19 13:13(JST) Shin-ichiro HARA writes: >原です。 >>ダブルディスパッチは高速化とは関係ないですね. > >いえ、ダブルディスパッチを用いる事により、呼び出すべきメソッド名 >を実行時に生成することが避けられて、スピード向上に大きく貢献して >いると思いますよ。このアイデアだけをもらったら確かに import-module >も速くなりました。ただ、scope-in-state では他の部分つまりメソッド >検索を ruby に返す事による効果の方が大きいので目立たないのですが。 ですね. >別立ての継承列を平行して作り、利用するというアイデアですね。すば >らしいです。 最近の私の作としてはヒット作ですね. >>さらに頑張りました. >> >>multi thread(1000000 loops in a scope) : 11.0412 >>single thread(1000000 loops in a scope) : 1.5240 >>scope in state(1000000 loops in a scope): 6.6583 > >うわ。これって、パラメータの受け渡しを途中で配列を作らず直接的に >することによる効果でしょうか。 ですね. 不定の引数を受け渡すために, mes(*arg) でうけ, dual_mes(receiver, *arg) で呼び, さらに receiver.real_mes(*arg) を読んでいたのですが, で実体を呼び出していたのですが, プロファイラを見て調べてみると, *argで 受けるところで配列が生成されるので, そこで呼び出しコストが発生していた みたいで, 前版では mes(*arg) dual_mes(receiver, arg) receiver.real_mes(*arg) とし, 一回配列生成を少なくしました. # 私の前版の新版との実行効率の差はここにあると思います. で, どうせなら, 引数の数もわかるし,ということで今のようにしてみました. >ソースも読みやすくなりましたね。(^^ ですかね? なんかいろいろとやっているうちにプログラムが長くなったもので... これは, 再整理しなくてはと... >import-module もアイデアのいただける所はいただいて、スピードアップ >したいのですが、明日からしばらく南の島でコンピュータの無い生活を送 >らなければならないのが残念です。(^^; いいなあ. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---