namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to get tf value?  (長文注意)



小松です。

On Tue, 26 Oct 1999 12:43:33 +0900 (JST)
Mr. Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx> wrote:
Rei> あと、「Data::Dumper 吐き出し」というのが、具体的にどうすることなのか、
Rei> も教えていただけると、ありがたいです。

 正確には、「Data::Dumper でファイル に print 」という意味で
した。こうしておいていただけば、ファイルに書いたハッシュは初期化
してメモリを節約できますし、複数の PC で作業を分業させることもでき
ます。ハッシュを使うときは、そのファイルを require すれば OK です。

【具体例】
my $Cluster = { # ref_hash
    c001 => [1,], 
    c002 => [10,10,],
    c003 => [22,10,10,10,10],
    c004 => [30,],
    c005 => [40,],
    c006 => [50,],
    c007 => [60,],
    c008 => [80,],
    c009 => [130,], 
    c010 => [140,]
    } ;

# Data::Dumper でこのハッシュをファイル $fh ('d.dump') に保存
print $fh Dumper($Cluster), "\n";

# ファイル d.dmp の中身はこんな風:
$VAR1 = {'c010' => [140],'c001' => [1],'c002' => [10,10],'c003' => 
[22,10,10,10,10],'c004' => [30],'c005' => [40],'c006' => [50],'c007' =>
[60],'c008' => [80],'c009' => [130]};

# 他のプログラムから、d.dmp に保存されたハッシュを使うときは:
my $h = require('d.dmp');

# CPAN にある Agent 関係のモジュールでも使われていて、オブジェ
# クトの転送にも使えます。

Rei> (3) 参照する順番に、規則性のようなものは、ありますでしょうか?
Rei> 
Rei> 「一つの大きなハッシュを返す関数」だと、戻ってくるまでに、かなりの時間
Rei> がかかると考えられます。
Rei> 
Rei> それに対して「値ごとに関数を呼んで、キャッシュを併用」ならば、一回の時
Rei> 間は短いので、途中経過の表示などがしやすくなります。ただし、参照順によ
Rei> っては、seek のコストによって、全体として遅くなるかもしれません。

 参照するときは、必ず「ファイル単位」で参照します。つまり、ある
ファイルにあるすべての $word のスコアを全部一気に参照します。ファイルは、
0 から順番に参照されます。$word の参照には、順番は、ありません。全部
を一回づつ参照します。

 こんな説明で、よろしいでしょうか。(キャッシュのイメージが、まだ
沸いてこないので、不十分な説明かもしれません)

 よろしくお願いします。
*-------------------------------------------------------
  Hiroshi Komatsu <sui_feng@xxxxxxxxxxxxx>
  URL  http://home2.highway.ne.jp/sui_feng/index.html



Rei> 古川です。
Rei> 
Rei> >> On Tue, 26 Oct 1999 10:32:35 +0900, Hiroshi KOMATSU <sui_feng@xxxxxxxxxxxxx> said:
Rei>   >  Dumper は、私もつい最近使い始めたのですが、結構いけてます。
Rei>   > 複雑なハッシュやアレーをファイルに吐き出したり、読み込んだり
Rei>   > プリチイにプリントするのに便利です。
Rei> 
Rei> なるほど、分かってきました。これは、使いこなせると、便利そうです。
Rei> 
Rei> あと、「Data::Dumper 吐き出し」というのが、具体的にどうすることなのか、
Rei> も教えていただけると、ありがたいです。
Rei> 
Rei> 
Rei> 
Rei>   >> (1) 同じデータを複数回参照しますか?
Rei>   >> (2) 最終的に、全てのデータを参照しますか?
Rei> 
Rei>   > #あう、メモリの問題がありますね。たしかに。
Rei> 
Rei>   > (1) (2) ともに、yes であります。
Rei> 
Rei> では、「十分なメモリを用意してね」ということにしましょう。で、もう一つ
Rei> うかがいたいのですが、
Rei> 
Rei> (3) 参照する順番に、規則性のようなものは、ありますでしょうか?
Rei> 
Rei> 「一つの大きなハッシュを返す関数」だと、戻ってくるまでに、かなりの時間
Rei> がかかると考えられます。
Rei> 
Rei> それに対して「値ごとに関数を呼んで、キャッシュを併用」ならば、一回の時
Rei> 間は短いので、途中経過の表示などがしやすくなります。ただし、参照順によ
Rei> っては、seek のコストによって、全体として遅くなるかもしれません。
Rei> 
Rei> -- 
Rei> 
Rei>                                         ヤマハ(株)ピアノプレーヤ設計課
Rei>                                                               古川 令
Rei>                                              furukawa@xxxxxxxxxxxxxxxx
Rei>