Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memunggah dengan Cekap Perhimpunan yang Dimuat dengan Assembly.LoadFrom()?
Untuk menguji masa yang diambil oleh GetTypes() selepas memuatkan DLL, mari kita terokai proses memunggah dan memuat semula DLL.
Apabila perhimpunan dimuatkan menggunakan Assembly.LoadFrom(), ia ditambahkan pada senarai perhimpunan AppDomain. Untuk memunggahnya, tiada kaedah eksplisit dalam Assembly atau AppDomain untuk memunggah. Walau bagaimanapun, anda boleh mencipta AppDomain baharu untuk memuatkan pemasangan dan kemudian memunggah AppDomain untuk melepaskan sumber.
Untuk memuat semula DLL, ikut langkah berikut:
string file = "path/to/assembly.dll"; // First AppDomain AppDomain dom1 = AppDomain.CreateDomain("domain1"); Assembly assem1 = dom1.Load(file); Stopwatch sw1 = Stopwatch.StartNew(); var types1 = assem1.GetTypes(); sw1.Stop(); double time1 = sw1.Elapsed.TotalMilliseconds; AppDomain.Unload(dom1); // Second AppDomain AppDomain dom2 = AppDomain.CreateDomain("domain2"); Assembly assem2 = dom2.Load(file); Stopwatch sw2 = Stopwatch.StartNew(); var types2 = assem2.GetTypes(); sw2.Stop(); double time2 = sw2.Elapsed.TotalMilliseconds; AppDomain.Unload(dom2); Console.WriteLine($"First Load: {time1} milliseconds"); Console.WriteLine($"Second Load: {time2} milliseconds");
Contoh ini mencipta dua AppDomains dan memuatkan DLL ke dalam setiap satu. Ia kemudian mengukur masa yang diambil oleh GetTypes() untuk kedua-dua keadaan. Perbezaan dalam pemasaan boleh menunjukkan overhed yang ditanggung dengan memuat semula DLL.
assem = null tidak mencukupi untuk mengeluarkan sumber yang diperuntukkan kepada Perhimpunan. Memanggil pemungut sampah secara eksplisit juga tidak akan membantu, kerana sumber khusus AppDomain tidak diurus olehnya. Menggunakan AppDomain baharu ialah pendekatan yang disyorkan untuk memunggah pemasangan dan melepaskan sumber berkaitannya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memunggah dengan Cekap Perhimpunan yang Dimuat dengan Assembly.LoadFrom()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!