Data.Text.Lazy.Builder против Text.Builder - PullRequest
0 голосов
/ 01 декабря 2018

В чем разница между модулем Data.Text.Lazy.Builder ( текстовый пакет ) и модулем Text.Builder ( text-builder )?Я имею в виду цели, эффективность и возможности?

1 Ответ

0 голосов
/ 02 декабря 2018

Я не использовал text-builder, но он претендует на звание "Эффективного строгого текста строитель" (выделено мной), в то время как стандарт Data.Text.Lazy.Builder создает ленивый Text (по сути, связанный списокмассивов UTF-16).Смысл обеих библиотек (идея Builder) заключается в том, чтобы избежать скопления и копирования при накоплении строки путем добавления.

Мне кажется, что библиотека text-builder в основном ограничиваетсам к типам со статически известным размером.Я полагаю, причина его существования в том, что это можно сделать более эффективным, чем обычный компоновщик в textrun вы можете выделить только один раз и затем сериализовать в массив, где в Data.Text.Lazy.Builder вам может понадобиться увеличивать или выделять новые порции по мере продвижения.И если вам действительно нужен строгий Text, то вам, вероятно, все равно придется заплатить за копирование всех этих блоков (и это может также потребовать дополнительного копирования промежуточного строгого Text, я не уверен).

Но это в основном домыслы.Возможно, Никита Волков присоединится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...