Проблемы с производительностью 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:

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

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

0 ответов

Другие вопросы по тегам