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.