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


Метод ICorProfilerCallback::JITCachedFunctionSearchStarted

Уведомляет профилировщика о начале поиска функции, скомпилированной ранее с помощью генератора образов в машинном коде (NGen.exe).

Синтаксис

HRESULT JITCachedFunctionSearchStarted(  
    [in]  FunctionID functionId,  
    [out] BOOL *pbUseCachedFunction);  

Параметры

functionId
[in] Идентификатор функции, для которой выполняется поиск.

pbUseCachedFunction
[out] true Значение , если подсистема выполнения должна использовать кэшированную версию функции (если она доступна); в противном случае false. Если значение равно false, обработчик выполнения JIT-компилирует функцию вместо использования версии, которая не компилируется JIT-скомпилированной.

Комментарии

В платформа .NET Framework версии 2.0 JITCachedFunctionSearchStarted обратные вызовы метода ICorProfilerCallback::JITCachedFunctionSearchFinished не будут выполняться для всех функций в обычных образах NGen. Только образы NGen, оптимизированные для профиля, будут создавать обратные вызовы для всех функций в образе. Однако из-за дополнительных издержек профилировщик должен запрашивать оптимизированные для профилировщика образы NGen только в том случае, если он намерен использовать эти обратные вызовы для принудительной компиляции функции JIT. В противном случае профилировщик должен использовать отложенную стратегию для сбора сведений о функциях.

Профилировщики должны поддерживать случаи, когда несколько потоков профилированного приложения одновременно вызывает один и тот же метод. Например, поток A вызывает JITCachedFunctionSearchStarted , и профилировщик отвечает, устанавливая для pbUseCachedFunctionзначение FALSE, чтобы принудительная JIT-компиляция. Затем поток A вызывает ICorProfilerCallback::JITCompilationStarted и ICorProfilerCallback::JITCompilationFinished.

Теперь поток B вызывает JITCachedFunctionSearchStarted ту же функцию. Несмотря на то, что профилировщик заявил о своем намерении выполнить JIT-компиляцию функции, профилировщик получает второй обратный вызов, так как поток B отправляет обратный вызов до того, как профилировщик ответил на вызов потока A к JITCachedFunctionSearchStarted. Порядок, в котором потоки выполняют вызовы, зависит от того, как запланированы потоки.

Когда профилировщик получает повторяющиеся обратные вызовы, он должен задать для значения, на которое ссылается pbUseCachedFunction параметр , одинаковое значение для всех повторяющихся обратных вызовов. То есть, когда JITCachedFunctionSearchStarted вызывается несколько раз с одинаковым functionId значением, профилировщик должен отвечать один и тот же каждый раз.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: доступно с версии 2.0

См. также раздел