如何加快打印Unicode的速度?
我正在使用 windows.h "TextOutW" 函数将文本打印到位图。打印普通的 ascii 确实很快,但是在 unicode 范围内打印似乎会导致巨大的减速。这是我打印 unicode 方块并测试持续时间的代码:
wchar_t b = 0x25A0;
LPCWSTR s = &b;
TextOutW(hMyDC, x, y, s, wcslen(s));
有没有办法加快这个速度?
编辑:我用计时器运行我的循环来测试速度:
using std::chrono::high_resolution_clock;
using std::chrono::duration_cast;
using std::chrono::duration;
using std::chrono::milliseconds;
auto t1 = high_resolution_clock::now();
for(int i = 0; i<1000; i++){
TextOutW(hMyDC, 25, 25, s, 1);
}
auto t2 = high_resolution_clock::now();
// auto ms_int = duration_cast<milliseconds>(t2 - t1);
duration<double, std::milli> ms_double = t2 - t1;
cout << ms_double.count() << "msn";
打印 'H' a 1000 次大约需要 5ms,打印 0x25A0 1000 次大约需要 50ms
回答
问题是您指向的是单个字符,而不是字符串。该wcslen是展示未定义的行为,并可能返回一个非常大的数字。用它替换它,1事情应该会大大加快。