多线程库性能

单线程的 CRT 不再可用。 本文讨论如何从多线程库中获取最佳性能。

最大程度地提高性能

多线程库的性能已增强,并且接近消除的单线程库的性能。 对于这些需要更高性能的情况,提高了多种新功能。

  • 利用独立流锁定,可以锁定流,然后使用直接访问流的 _nolock 函数。 此功能允许在关键循环的外部提升锁定用法。

  • 每个线程区域设置可降低多线程方案的区域设置访问成本(请参见 _configthreadlocale)。

  • 区域设置相关的函数(名称以 _l 结尾)将区域设置用作参数,并降低了大量成本(例如,printf_printf_lwprintf_wprintf_l)。

  • 公共代码页的优化将降低许多短操作的成本。

  • 定义 _CRT_DISABLE_PERFCRIT_LOCKS 将强制所有 I/O 操作采用单线程的 I/O 模型并使用函数的 _nolock 形式。 此宏使高度基于 I/O 的单线程应用程序能够获得更好的性能。

  • 通过公开 CRT 堆句柄,您可以启用 CRT 堆的 Windows 低分片堆 (LFH),这将大大改进高度缩放的方案的性能。

另请参阅

C 运行时 (CRT) 和 C++ 标准库 (STL) .lib 文件