Dynamiczne wykorzystanie dużej liczby DLL

0

Witam, problem, który zaraz opiszę, umiem obejść, więc proszę nie tyle o pomoc w rozwiązaniu, co raczej
o fachowe wyjaśnienie jak to działa :)

Rozwijam projekt, który korzysta z zewnętrznych bibliotek (jest to coś w rodzaju pluginów). Wszystkie potrzebne DLL są dołączane dynamicznie. Co ważne, taki "plugin" obsługuje zazwyczaj tylko jakiś drobiazg, np. składa się z jednej funkcji. Jeden plugin = jeden plik DLL, więc załóżmy, że w skrajnym przypadku będę potrzebował 1000 DLL.

Od razu nasuwa się pytanie: czy tak duża liczba różnych DLL'ów nie spowoduje znacznego spadku wydajności? Program będzie tracił dużo czasu na przeskakiwanie pomiędzy bibliotekami?

Podkreślam, że w mojej specyficznej aplikacji dość ważna jest szybkość, więc znajdowanie DLL'a i odpowiedniej funkcji dopiero tuż przed wywołaniem nie wchodzi w grę. Wszystkie DLL są załadowane na starcie. Wszystko bazuje na .NET, więc pluginy mogłyby być napisane w dowolnym języku platformy. Ale czy takie rozwiązanie nie psuje całej aplikacji? Jak zachowuje się program w momencie wywoływania raz po raz funkcji z różnych zewnętrznych bibliotek?

0

Nie wiem jak będzie w trakcie używania stworzonych obiektów z bibliotek, ale powiem ci, że samo wczytanie 1000 takich bibliotek potrwa parę minut.

0

Kilka minut? Wczytanie kilkuset prostych dll-ek zamuje kilka sekund... a komunikacja z DLL jest niemal tak samo wydajna jak z klamotami w bieżącym module.

0

No właśnie, już są dwie rozbieżne odpowiedzi. Dlle byłyby bardzo proste, większość po kilka KB na dysku. A jak się ma korzystanie z 1000 różnych dll do używania tylko jednej biblioteki zawierającej kod z całego tysiąca dll? Skoro rośnie rozmiar pojedynczego dll'a , to można się chyba spodziewać, że ogólnie dostęp będzie trochę wolniejszy, prawda? Intuicja podpowiada, że lepsze to drugie rozwiązanie, ale w pewnych przypadkach mniej wygodne.

0

Załadowanie wielu bibliotek trwa dłużej niż załadowanie jednej. Używanie funkcji z jednej załadowanej biblioteki a używanie funkcji z wielu załadowanych bibliotek trwa tyle samo.

0

Ok, jeśli to prawda, to wyczerpuje moje pytania, dzięki.

0

Przede wszystkim zastanow sie, czy bardziej nie oplaca Ci sie w jednej DLL'ce umozliwic trzymania wielu pluginow: z programem bedzie mozna dostarczyc jedna DLLke z wszystkim co potrzeba na starcie, i nie bedziesz niepotrzebnie mnozyl bytow binarek. Da to tez wybor tworcom pluginow.

0

Zastanawiam się nad tym, dlatego pytam :) Z pewnych względów oczywiście, masz rację, ale ciekawy jestem w jakim stopniu można tu zakombinować bez szkody dla samego siebie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1