Поделиться через


Производительность многопотоковых библиотек

Однопоточные CRT более не доступны. В этой статье описывается, как получить максимальную производительность из многопоточных библиотек.

Максимальное увеличение производительности

Производительность многопоточных библиотек улучшилась и близка к производительности теперь исключенных однопоточных библиотек. Для ситуаций, когда нужна еще более высокая производительность, предусмотрено несколько новых возможностей.

  • Независимая блокировка потоков позволяет заблокировать поток, а затем использовать _nolock функции , которые обращаются к потоку напрямую. Эта функция позволяет закрепить использование блокировки вне критически важных циклов.

  • Языковой стандарт для каждого потока снижает затраты на доступ к языковому стандарту для многопоточных сценариев (см. раздел _configthreadlocale).

  • Функции, зависящие от языкового стандарта (с именами, заканчивающимися _l), принимают языковой стандарт в качестве параметра, удаляя существенные затраты (например, , printf, _printf_lwprintf, ). _wprintf_l

  • Оптимизации для общих кодовых страниц снижают стоимость множества коротких операций.

  • Определение _CRT_DISABLE_PERFCRIT_LOCKS заставляет все операции ввода-вывода принимать модель ввода-вывода с одним потоком и использовать _nolock формы функций. Этот макрос позволяет приложениям с одним потоком на основе высокопоточных операций ввода-вывода повысить производительность.

  • Предоставление дескриптора кучи CRT позволяет включить кучу низкой фрагментации Windows (LFH) для кучи CRT, что может значительно повысить производительность в высокомасштабируемых сценариях.

См. также

Файлы среды выполнения C (CRT) и стандартной библиотеки C++ (STL) .lib