如何加快打印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事情应该会大大加快。


以上是如何加快打印Unicode的速度?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>