Mam problem z w/w metodą. Otóż przy pierwszym uruchomieniu programu który dynamicznie wczytuje DLL'kę metodą invoke, zawsze czas jej wywoływania jest ogromnie duży - 600ms. Niezależy on od wielkości danych. Kolejne wywołania metody są już w czasie ok 60ms. Czuje, że to wina tworzenia nowych obiektów w pamieci, lub coś podobnego... ktoś wie, jak się z tym rozprawić?
dllPath = @"xxx.dll";
assembly = Assembly.LoadFrom(dllPath);
type = assembly.GetType("klasa");
instanceOfMyType = Activator.CreateInstance(type);
m = type.GetMethod("metoda");
sw.Reset();
sw.Start();
m.Invoke(instanceOfMyType, new object[] { this.tab, this.tab.Length }); // tutaj jest problem
sw.Stop();
Console.WriteLine("wywolaj: " + sw.ElapsedMilliseconds.ToString());
Wyniki(ms)
wywolaj: 689
wywolaj: 67
wywolaj: 63
wywolaj: 64
wywolaj: 65
wywolaj: 69
wywolaj: 63
wywolaj: 64
wywolaj: 63
wywolaj: 65
wywolaj: 64
wywolaj: 65