Freigeben über


ICorProfilerCallback::JITCachedFunctionSearchStarted-Methode

Benachrichtigt den Profiler, dass eine Suche für eine Funktion gestartet wurde, die zuvor mit dem Native Image Generator (NGen.exe) kompiliert wurde.

Syntax

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

Parameter

functionId
[in] Die ID der Funktion, für die die Suche ausgeführt wird.

pbUseCachedFunction
[out] true, wenn die Ausführungs-Engine die zwischengespeicherte Version einer Funktion verwenden soll (sofern verfügbar); andernfalls false. Wenn der Wert false lautet, führt die Ausführungs-Engine eine JIT-Kompilierung der Funktion aus, anstatt eine Version zu verwenden, die nicht JIT-kompiliert (Just-In-Time) ist.

Bemerkungen

In .NET Framework 2.0 erfolgen die Rückrufe von JITCachedFunctionSearchStarted und der ICorProfilerCallback::JITCachedFunctionSearchFinished-Methode nicht für alle Funktionen in regulären NGen-Images. Nur für ein Profil optimierte NGen-Images generieren Rückrufe für alle Funktionen im Image. Aufgrund des zusätzlichen Aufwands sollte ein Profiler jedoch profiloptimierte NGen-Images nur anfordern, wenn er beabsichtigt, diese Rückrufe zu verwenden, um die JIT-Kompilierung einer Funktion zu erzwingen. Andernfalls sollte der Profiler beim Sammeln von Funktionsinformationen eine Verzögerungsstrategie anwenden.

Profiler müssen Fälle unterstützen, in denen mehrere Threads einer Anwendung mit Profil gleichzeitig dieselbe Methode aufrufen. Ein Beispiel: Thread A ruft JITCachedFunctionSearchStarted auf, und der Profiler reagiert, indem er pbUseCachedFunction auf „false“ festlegt, um die JIT-Kompilierung zu erzwingen. Thread A ruft dann ICorProfilerCallback::JITCompilationStarted und ICorProfilerCallback::JITCompilationFinished auf.

Thread B ruft nun JITCachedFunctionSearchStarted für dieselbe Funktion auf. Obwohl der Profiler die Absicht angegeben hat, die Funktion per JIT zu kompilieren, empfängt der Profiler den zweiten Rückruf, da Thread B diesen Rückruf sendet, bevor der Profiler auf den Aufruf von JITCachedFunctionSearchStarted durch Thread A geantwortet hat. Die Reihenfolge, in der die Threads Aufrufe tätigen, hängt davon ab, wie die Threads geplant sind.

Wenn der Profiler doppelte Rückrufe empfängt, muss er den Wert, auf den pbUseCachedFunction verweist, für alle doppelten Rückrufe auf denselben Wert festlegen. Das heißt, wenn JITCachedFunctionSearchStarted mehrmals mit demselben functionId-Wert aufgerufen wird, muss der Profiler jedes Mal gleich reagieren.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch