D I/O model考察

@9rnsrがD言語で考えているI/Oについて語ってます。
0
hara kenji @9rnsr

@Rayerd いやまあ、自分はこの1月ぐらい暇にあかせてこればっかりやってたので。(現在無職)

2011-02-27 01:34:03
はるえす@イカのフレンズ @Rayerd

@9rnsr なるほど。ありがとうございます。実行時にならないとどのStreamを使えばよいかわからないから静的に解決できないと。しかし、そういう場合は動的多態を使い、そうでない場合は静的多態を使えばよいだけではないのでしょうか?

2011-02-27 01:37:13
はるえす@イカのフレンズ @Rayerd

つまり、ユーザの責任で静的に解決するケースではテンプレートを使えるようになっていればよいし、そうでないケースではユーザの責任で動的多態を使えるようになっていればよいのではないのかな?

2011-02-27 01:40:50
はるえす@イカのフレンズ @Rayerd

動的多態の方は分岐部分を書くためにハリウッドスタイルのコーディングになるだろうか。

2011-02-27 01:43:08
hara kenji @9rnsr

@Rayerd そうですね。すべて動的多態でも問題ないです(std.streamがそうですし)。テンプレートでStream構成はそのほうが早くなる(かも)&かっこいいから、です。

2011-02-27 01:44:30
hara kenji @9rnsr

ハリウッドスタイルとは何でしょうか? RT @Rayerd: 動的多態の方は分岐部分を書くためにハリウッドスタイルのコーディングになるだろうか。

2011-02-27 01:45:50
はるえす@イカのフレンズ @Rayerd

適当に探したらここしか見つからなかった

2011-02-27 01:50:07
はるえす@イカのフレンズ @Rayerd

しかしハリウッドスタイルでよかったのかな。俺が読んだ本にはそう書いてあったような気がするんだけど、正確には違う言い方がされていたのかもしれない。

2011-02-27 01:51:32
はるえす@イカのフレンズ @Rayerd

分岐部分はどのようになっているのがよいのかな?チャンクを読んだ後にユーザコードを呼び出して処理してもらうくらいしか思いつかない

2011-02-27 01:53:56
はるえす@イカのフレンズ @Rayerd

体系的にまとめないと議論は進まないんだよね…

2011-02-27 01:56:57
hara kenji @9rnsr

@Rayerd 理解できました。フレームワークがコールバックするよなスタイルということですね。しかしこの場合、Streamはユーザーコードでpullしてやらないと駆動しないので、ハリウッドスタイルにはならない気がします。

2011-02-27 01:57:48
hara kenji @9rnsr

自分のイメージ。 auto enc = EncodingCheck(binary_source); if (enc.mode == UTF8) foreach(l;Lined!string(enc)){} else foreach(l;Lined!wstring(enc)){}

2011-02-27 01:59:37
はるえす@イカのフレンズ @Rayerd

@9rnsr Linedで型を与える方が高速なんでしょうか

2011-02-27 02:07:35
はるえす@イカのフレンズ @Rayerd

@9rnsr いやこの質問じゃよくわからないですね

2011-02-27 02:10:15
hara kenji @9rnsr

@Rayerd Lined(const(char)[])ならバッファのSlice、Lined!stringならidupされる行を返すようにすれば確かに効率に差が出ます。

2011-02-27 02:12:50
hara kenji @9rnsr

ローカルで作業中のI/Oモジュール http://bit.ly/hezLGb Lined!(const(char)[]) で、-inline -release ならstd.stdioを超える性能が出る (Win32のみ)

2011-02-27 02:15:54
はるえす@イカのフレンズ @Rayerd

そうかメールやウェブページを一行ごとに読みとろうとしたら確かに分岐が必要そうだが…

2011-02-27 02:17:58
SHOO @mono_shoo

…ん?なんかTLでD言語の面白そうな話してる気がする。

2011-02-27 02:18:54
hara kenji @9rnsr

ここだけの話:自分はbyLineやbyChunkという名前はあまり好きではありません。

2011-02-27 02:26:19
はるえす@イカのフレンズ @Rayerd

この分岐はどうしてもユーザコードに書かざるを得ないのかーそうかなーぐぎぎ

2011-02-27 02:27:35
hara kenji @9rnsr

@Rayerd なにかユースケースを思いつかれましたか?

2011-02-27 02:29:06