0

我正在将一些应用程序从用于 C 字符串的 wchar_t 移植到 C++11 提供的 char16_t。

虽然我有问题。我发现可以处理 char16_t 类型的 snprintf 的唯一库是 ICU 及其 UChar 类型。

u_snprintf_u(等效于 swprintf/snprintf,但以 Uchar 作为参数)的性能差强人意。

一些测试导致 u_snprintf_u 比 snprintf 慢 25 倍。

我在 valgrind 上得到的示例:

调用研磨

如您所见,底层代码正在做太多工作并实例化我不想要的内部对象。

编辑:我正在使用的数据不需要由底层 ICU 代码解释。它是面向ASCII的。我没有找到任何方法告诉 ICU 不要尝试在此类函数调用上应用语言环境等。

4

0 回答 0