Я портирую некоторое приложение из wchar_t для строк C на char16_t, предлагаемое C ++ 11.
Хотя у меня есть проблема.Единственная найденная мной библиотека, которая может обрабатывать snprintf для типов char16_t, - это ICU с их типами UChar.
Производительность u_snprintf_u (эквивалентна swprintf / snprintf, но с использованием Uchar в качестве аргументов) крайне плохая.
В результате некоторых испытаний u_snprintf_u в 25 раз медленнее, чем snprintf.
Примериз того, что я получаю на valgrind:
Как видите, базовый код выполняет слишком много работы и создает внутренние объекты, которые я не делаюхочу.
Редактировать: данные, с которыми я работаю, не должны интерпретироваться базовым кодом ICU.Это ascii ориентировано.Я не нашел способа сказать ICU не пытаться применять локали и тому подобное при таких вызовах функций.