В отсутствие других ответов я собираюсь выйти на конечность здесь.
Какова лучшая практика, когда нужно хранить и сравнивать большое количество маленьких строк в Haskell?
Если маленькие строки предназначены для чтения человеком (например, английское слово), тогда используйте Text
.Если они предназначены для чтения только компьютером, используйте ByteString
.Решение использовать строгие или ленивые варианты их зависит от того, как вы строите и используете эти маленькие строки.
Вам не нужно использовать свои собственные распакованные Vector
s из Word8
.Если вы столкнулись с определенной ситуацией, когда обычный String
быстрее, чем Text
или ByteString
, добавьте подробности в StackOverflow, и мы попытаемся выяснить, почему.Если вы выполняете подробный анализ и можете доказать, что распакованный Vector
из Word8
последовательно работает значительно лучше, чем Text
или ByteString
, тогда начните беседы в списках рассылки, irc, reddit и т. Д .;стандартные библиотеки не стоят на пороге, и улучшения всегда приветствуются.
Но я думаю, что весьма вероятно, что вы просто делаете что-то странное, как говорят Хаммар и Шанг.
PS для вашегоВ конкретном случае вместо хранения множества маленьких строк вам следует рассмотреть более подходящую структуру данных, отвечающую вашим потребностям, например, Trie, как предлагает danr.