たとえば、takeWhileを取ります。内部的にはspanを使用します。
それは入力バイト文字列を参照するだけということですか? おそらくそうではありませんが、もしそうなら、これを達成する方法はありますか?
動機となるユースケースは、メモリにマップし、マップされたメモリを指すバイト文字列を抽出したい大きな (> 2GB) ファイルです。
はい、ドキュメントでわかるように、 ByteString
s に対するすべての部分文字列のような操作はO(1)であり、異なるオフセット/長さで浅いコピーを作成します。これが必要ない場合は、 を使用して解析結果の完全なコピーを取得し、元の巨大な文字列をガベージ コレクションすることができます。copy
さらに、 と の具体化を検討Lazy
してください。大きなチャンクmmap
をAttoparsec
連続して解析する場合は、おそらくより最適になる可能性があります。