Проблемы с производительностью u_snprintf_u из libicu - PullRequest
0 голосов
/ 20 декабря 2018

Я портирую некоторое приложение из wchar_t для строк C на char16_t, предлагаемое C ++ 11.

Хотя у меня есть проблема.Единственная найденная мной библиотека, которая может обрабатывать snprintf для типов char16_t, - это ICU с их типами UChar.

Производительность u_snprintf_u (эквивалентна swprintf / snprintf, но с использованием Uchar в качестве аргументов) крайне плохая.

В результате некоторых испытаний u_snprintf_u в 25 раз медленнее, чем snprintf.

Примериз того, что я получаю на valgrind:

callgrind

Как видите, базовый код выполняет слишком много работы и создает внутренние объекты, которые я не делаюхочу.

Редактировать: данные, с которыми я работаю, не должны интерпретироваться базовым кодом ICU.Это ascii ориентировано.Я не нашел способа сказать ICU не пытаться применять локали и тому подобное при таких вызовах функций.

...