String, ByteString, FilePathとFilesystemモジュールあたりの話

1
山本和彦 @kazu_yamamoto

.@tanakh String は FFI 呼び出しのときに、ByteString もどきに直されるので、Mighty 用の用途だと、そのオーバーヘッドをなくしたいという意味でした。ただ、たとえ内部で ByteString に直しても、ヌル終端するためコピーは必要かもしれません。

2012-06-13 15:14:50
Hideyuki Tanaka @tanakh

@kazu_yamamoto なるほど。たしかにWebサーバだとかなりヘビーかもしれません。

2012-06-13 15:15:57
山本和彦 @kazu_yamamoto

FilePath 加工のオーバーヘッドがなくなれば、Mighty はもっと速くなる(はず)。

2012-06-13 15:16:05
山本和彦 @kazu_yamamoto

.@tanakh 現在の Mighty は自前で Builder もどきを持っています。API が String だったり ByteString だったりと一貫性がないから、両方を格納しておく Builder が必要です。できれば、自前 Builder は止めたいです。

2012-06-13 15:24:42
山本和彦 @kazu_yamamoto

ByteString から CString へは、useAsCString で memcpy。String を CString へ直すよりかは速いと思われる。

2012-06-13 15:35:57
山本和彦 @kazu_yamamoto

useAsCString は withCString よりも速い。(名前に一貫性がないのが、ダサい。)

2012-06-13 15:38:09
Hideyuki Tanaka @tanakh

@kazu_yamamoto なるほど、どちらも生成する可能性があるのでしたか。

2012-06-13 15:40:35
山本和彦 @kazu_yamamoto

.@tanakh String を使っている API が多いせいです。GHC 7.4 からは、ばっさり String を捨てられるか、これから検討します。(Mighty が古い GHC で動かなくてもいいよね?)

2012-06-13 15:43:32
山本和彦 @kazu_yamamoto

wai に String な FilePath が含まれている! はぁ。

2012-06-13 16:05:22