Método ICorProfilerCallback::JITCachedFunctionSearchStarted
Notifica o criador de perfil de que uma pesquisa foi iniciada para uma função que foi compilada anteriormente usando o NGen.exe (gerador de imagem nativa).
Sintaxe
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
Parâmetros
functionId
[in] A ID da função para a qual a pesquisa está sendo executada.
pbUseCachedFunction
[out] true
se o mecanismo de execução tiver que usar a versão armazenada em cache de uma função (se disponível); caso contrário false
. Se o valor for false
, o mecanismo de execução JIT compila a função em vez de usar uma versão que não seja compilada por JIT.
Comentários
No .NET Framework versão 2.0, os retornos de chamada JITCachedFunctionSearchStarted
e Método ICorProfilerCallback::JITCachedFunctionSearchFinished não serão feitos para todas as funções em imagens NGen regulares. Somente imagens NGen otimizadas para um perfil gerarão retornos de chamada para todas as funções na imagem. No entanto, devido à sobrecarga adicional, um criador de perfil deve solicitar imagens NGen otimizadas para criador de perfil somente se pretender usar esses retornos de chamada para forçar uma função a ser compilada just-in-time (JIT). Caso contrário, o criador de perfil deve usar uma estratégia lenta para coletar informações de função.
Os profilers devem dar suporte a casos em que vários threads de um aplicativo com perfil estão chamando o mesmo método simultaneamente. Por exemplo, as chamadas JITCachedFunctionSearchStarted
de thread A e o criador de perfil respondem definindo pbUseCachedFunction como FALSE para forçar a compilação JIT. Em seguida, o Thread A chama ICorProfilerCallback::JITCompilationStarted e ICorProfilerCallback::JITCompilationFinished.
Agora, o thread B chama JITCachedFunctionSearchStarted
para a mesma função. Embora o criador de perfil tenha declarado sua intenção de compilar a função por JIT, o criador de perfil recebe o segundo retorno de chamada porque o thread B envia o retorno de chamada antes que o criador de perfil responda à chamada do thread A para JITCachedFunctionSearchStarted
. A ordem na qual os threads fazem chamadas depende de como os threads são agendados.
Quando o criador de perfil recebe retornos de chamada duplicados, ele deve definir o valor referenciado por pbUseCachedFunction
para o mesmo valor para todos os retornos de chamada duplicados. Ou seja, quando JITCachedFunctionSearchStarted
é chamado várias vezes com o mesmo valor functionId
, o criador de perfil deve responder o mesmo sempre.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 2.0