Проблемы с производительностью u_snprintf_u из libicu

Я портирую некоторые приложения из 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 не пытаться применять локали и тому подобное к таким вызовам функций.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …