Есть ли лучшая альтернатива для чтения и показа в Haskell?

Я пишу прототип сети, где Server передает состояние World ко всем его Clients. Я делаю это, используя следующий рабочий процесс:

Server --> World --> show --> ByteString --> GZip.compress   --> udp send
Client <-- World <-- read <-- ByteString <-- GZip.decompress <-- udp receive

Однако, похоже, что show и read - это узкие места в производительности, занимающие большую часть времени. По мере роста World это будет серьезной проблемой.

Я знаю, что в какой-то момент мне придется прекратить посылать весь мир, но есть ли альтернативы использованию read и show для преобразования структуры данных в ByteString?

14 голосов | спросил sdasdadas 26 AM00000050000004231 2014, 05:24:42

1 ответ


0

Я считаю, что двоичный пакет обеспечивает очень эффективную де-сериализацию в /из двоичных форматов.

РЕДАКТИРОВАТЬ: Код был запрошен, это пример Generic из документации (BSD3):

{-# LANGUAGE DeriveGeneric #-}

import Data.Binary
import GHC.Generics (Generic)

data Foo = Foo
         deriving (Generic)

-- GHC will automatically fill out the instance
instance Binary Foo

Тогда вы можете, например, используйте encode вместо show и decode вместо read. Обратите внимание, что пакет имеет несколько других функций, которые могут быть полезны, и что формат может быть настроен.

ответил Ørjan Johansen 26 AM00000050000003131 2014, 05:34:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132