From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-08-10T14:48:01+09:00 Subject: [ruby-dev:17970] new scope-in-state [Re: import-module (Re: Re: scope-in-state)] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev:17956] the message: "[ruby-dev:17956] Re: import-module (Re: Re: scope-in-state)", on Aug/07 19:06(JST) 石塚圭樹 writes: >>>私も実装をどうやったのか覚えていなくて, 思い出すのに苦労しました. 私の >>>もですが, 原さんのも理解するのが難しい実装ですよね(^^;;; >> >>すいません。あまりに未整理のまま人に読ませてしまったので、反省して >>ます。今 Ver. 0.16 を作りました。こっちは2倍(当校比)読みやすい >>はずです。これで scope-in-state と同じぐらいの読みにくさかと。:-) > >(^^;;; > >>おかしい〜、import-module が負けるなんて!! 頑張りました. multi-thread版なら1.8倍速です. single-thread版との比でも 4.8倍に圧縮できました. >>># でも, もっと良い実装のアイディアが出ましたので, もうちょっと頑張って >>># みます. >>いやあ、もう限界だと思うけど、、、いったい何でしょう。興味津々。 >実装は, 今度は全然違います. 自分で言うのも何ですが, 惚れ惚れとするよう >なものです(^^;;; 難しさは... より難しいかも(^^;;; 旧scope-in-stateはメソッド検索を自前でやっていてそれがネックだったわけ ですが, それをrubyのメソッド検索機構におまかせするようにしました. それ とダブルディスパッチを応用したことでしょうか. RAAに置きました. >原さんのも同じくらいの値ですがmulti thread版はこれが限界でしょうね. 私 >のメソッド呼び出しは, > > メソッド呼び出し4回+``::''演算 変わりました. 呼び出しコストは メソッド呼び出し3回+スレッド変数アクセス(th[:var]) になりました. 呼び出すものにも依りますが, まともなメソッドだったら上記 ぐらいの呼び出しコストは無視できるに違いありません. 原パフォーマンステスト関数では以下のような感じです. scope in state(scopes in 10000 loops) : 1.6164 scope in state(10000 loops in a scope) : 0.0941 # multi thread(scopes in 10000 loops) : 64.1949 multi thread(10000 loops in a scope) : 0.1726 single thread(scopes in 10000 loops) : 47.8426 single thread(10000 loops in a scope) : 0.0195 __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---