Ясно, что Seq
асимптотически выполняет то же самое или лучше, чем []
для всех возможных операций. Но поскольку его структура сложнее, чем списки, для небольших размеров его постоянные накладные расходы, вероятно, будут замедляться. Я хотел бы узнать, в частности:
- Насколько медленнее
<|
по сравнению с:
? - Насколько медленнее складывается/перемещается
Seq
по сравнению с откидыванием/перемещением[]
(исключая стоимость функции сгибания/перемещения)? - Каков размер (приблизительно), для которого
\xs x -> xs ++ [x]
становится медленнее, чем|>
? - Каков размер (приблизительно), для которого
++
становится медленнее, чем><
? - Какова стоимость вызова
viewl
и соответствия шаблонов по результату по сравнению с сопоставлением шаблонов в списке? - Сколько памяти занимает
n
-элементSeq
по сравнению с спискомn
-element? (Не считая памяти, занимаемой элементами, только структура.)
Я знаю, что это трудно измерить, так как с Seq
мы говорим об амортизированной сложности, но я хотел бы знать хотя бы некоторые грубые цифры.