Существует ли параметрическая версия ленивого ByteString?

Насколько я понимаю, ByteStrings - это просто списки векторов Word8s. Эта упаковка дает лучшую производительность памяти и скорости для двоичных потоков. Точно так же тип Text повышает производительность на Char потоках.

Но что, если у меня Int потоков или Double потоков? Существует ли параметрическая версия ByteString, которую легко использовать с различными типами данных? Я предполагаю, что имеет смысл использовать только неупаковываемые типы.


person Mike Izbicki    schedule 30.05.2013    source источник


Ответы (2)


Vector — лучший выбор для строгих массивов. StorableVector пытается быть интерфейсом, более похожим на ByteString, включая ленивое, фрагментированное поведение, и я полагаю, что изначально он был написан как обобщение кода ByteString: http://hackage.haskell.org/package/storablevector

person sclv    schedule 30.05.2013
comment
Кроме того, многие люди используют ленивые строки байтов и десериализацию для получения ленивых потоков Ints или Doubles. - person Thomas M. DuBuisson; 30.05.2013

Если вам нужны только «строгие» версии, используйте vector, который является частью платформы . У Vector есть как распакованный, так и (полностью универсальный) коробочный варианты. Vector также включает в себя агрессивное слияние потоков высокого качества.

person Philip JF    schedule 30.05.2013
comment
Я хочу ленивую версию. В частности, я хочу иметь доступ к структуре данных с несколькими гигабайтами Double, не загружая их все в память. - person Mike Izbicki; 30.05.2013