У меня есть программа Haskell, которая обрабатывает текстовый файл и создает Map
(с несколькими миллионами элементов). Все это может продолжаться 2-3 минуты. Я обнаружил, что настройка параметров -H и -A делает большую разницу в времени выполнения.
Существует документация об этой функциональности RTS, но это трудно прочитать для меня, так как я не знаю алгоритмов и терминов из Теория ГК. Я ищу менее техническое объяснение, желательно для Haskell/GHC. Есть ли ссылки на выбор разумных значений для этих параметров?
EDIT: Что код, он строит trie для данного списка слов.
buildTrie :: [B.ByteString] -> MyDFA
buildTrie l = fst3 $ foldl' step (emptyDFA, B.empty, 1) $ sort $ map B.reverse l where
step :: (MyDFA , B.ByteString, Int) -> B.ByteString -> (MyDFA , B.ByteString, Int)
step (dfa, lastWord, newIndex) newWord = (insertNewStates, newWord, newIndex + B.length newSuffix) where
(pref, lastSuffix, newSuffix) = splitPrefix lastWord newWord
branchPoint = transStar dfa pref
--new state labels for the newSuffix path
newStates = [newIndex .. newIndex + B.length newSuffix - 1]
--insert newStates
insertNewStates = (foldl' (flip insertTransition) dfa $ zip3 (branchPoint:init newStates) (B.unpack newSuffix) newStates)