если нормализовать текст сразу в NFC, то время выполнения составляет 87 секунд. а если сначала в NFD, а затем в NFC, то 17
В уникодном Basic Multilingual Plane присутствует всего 70 символов, которые после NFC нормализации начинают занимать большее количество байт, большая часть отностится к ивриту, так что в абсолютном большинстве случаев можно сделать преаллокацию по текущему размеру строки
Вообще интересно, где-нибудь есть вики, где бы были статьи про все уникодные символы? Ну то есть, типа, название — символ, а в статье что это за символ, в каких языках итп встречается, какие шревты поддерживают итд. В собственно вики про многие символы есть такое, но не про все и часто редиректят на разные странные статьи.