3

たとえば、takeWhileを取ります。内部的にはspanを使用します。

それは入力バイト文字列を参照するだけということですか? おそらくそうではありませんが、もしそうなら、これを達成する方法はありますか?

動機となるユースケースは、メモリにマップし、マップされたメモリを指すバイト文字列を抽出したい大きな (> 2GB) ファイルです。

4

1 に答える 1

3

はい、ドキュメントでわかるように、 ByteStrings に対するすべての部分文字列のような操作はO(1)であり、異なるオフセット/長さで浅いコピーを作成します。これが必要ない場合は、 を使用して解析結果の完全なコピーを取得し、元の巨大な文字列をガベージ コレクションすることができます。copy

さらに、 と の具体化を検討Lazyしてください。大きなチャンクmmapAttoparsec連続して解析する場合は、おそらくより最適になる可能性があります。

于 2014-03-13T12:46:30.020 に答える