Um die Zeit zu ermitteln, die für die Ausführung von GetTypes() nach dem Laden einer DLL aufgewendet wurde, können Sie die unten aufgeführten Schritte ausführen.
Der Garbage Collector (GC) ist für die Rückgewinnung ungenutzten Speichers verantwortlich. Während das Setzen des Assembly-Objekts auf Null dazu führt, dass der GC das Objekt für eine mögliche Sammlung markiert, kann nicht garantiert werden, dass der Speicher sofort freigegeben wird.
Der folgende Code zeigt, wie das geht Laden Sie eine Assembly in eine separate AppDomain und entladen Sie sie, nachdem Sie die Zeit für GetTypes() gemessen haben:
// Define the assembly path string pathToAssembly = @"C:\temp\myassembly.dll"; // Create a new AppDomain AppDomain dom = AppDomain.CreateDomain("some"); // Load the assembly in the new AppDomain AssemblyName assemblyName = new AssemblyName(); assemblyName.CodeBase = pathToAssembly; Assembly assembly = dom.Load(assemblyName); // Measure the time for GetTypes() Stopwatch sw = Stopwatch.StartNew(); Type[] types = assembly.GetTypes(); sw.Stop(); double time1 = sw.Elapsed.TotalMilliseconds; // Unload the AppDomain to release the assembly AppDomain.Unload(dom);
Durch Entladen der AppDomain, Sie stellen sicher, dass die der geladenen Assembly zugewiesenen Ressourcen freigegeben werden, was eine genauere Zeitmessung für nachfolgende Lade- und GetTypes()-Vorgänge ermöglicht.
Das obige ist der detaillierte Inhalt vonWie entlade ich mit Assembly.LoadFrom() geladene Baugruppen effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!