-
Data: 2017-11-20 13:42:29
Temat: Re: Architektura aplikacji - powody wyłączania dll z exe
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> Nie jesteś w stanie przeprowadzić doświadczenia, jest zbyt kosztowne.
> Możesz liczyć jednak że exe będzie miał powiedzmy 2GB rozmiaru jesli
> suma dllek jest rzedu 2.5GB.
To ciekawa wartość. Bo np. o Linuksie (o jądrze, co niektórzy używają jako jakiś
znany punkt odniesienia w dyskusji o rozmiarach) mówi się, że ma ileś tam milionów
linii kodu i to jest warte ileś tam tysięcy lat pracy a po skompilowaniu jest tego
jakieś tam... megabajty. A tu mamy w dyskusji gigabajty. Z tego by wynikało, że tego
programu jest powiedzmy dwa rzędy wielkości więcej, niż Linuksa, czyli na oko miliard
linii kodu i milion lat pracy. Co z kolei każe poddać pod wątpliwość, czy w ogóle
taki program dało się na tej planecie napisać. A jeśli uznamy, że się nie dało, to
wniosek jest taki, że binarka jest rozdmuchana i pewnie da się z niej coś zdjąć.
Dla przykładu, ostatnia gigantyczna DLLka jaką widziałem, miała w sobie wpałowany
jako resource jakiś odjechany jeden plik z danymi. Po pouczeniu programistów, że tak
się nie robi (sprawa się rypła, bo się Visual na tym wywalał) i wyrzuceniu pliku
do... osobnego pliku (wczytywanego przez program w razie potrzeby!), DLLka schudła do
kilobajtów i chyba w ogóle przestała być potrzebna.
Może to jest jakiś trop?
W każdym razie, ja nie umiałbym naklepać tyle kodu (nawet z kolegami), żeby mi się
zrobiło z tego parę GB, więc jeżeli ktoś ma taką binarkę, to albo goście od Linuksa
mogą się od niego uczyć, albo on może się uczyć od gości od Linuksa, bo się te liczby
w jedną albo drugą stronę nie zgadzają.
No w każdym razie jakiś przepływ porad i doświadczeń byłby korzystny.
> b) ilośc zmiennych statycznych które musisz zainicjować od razu jest
> większa niż gdy aplikacja ladowana jest po kawałku, co spowolni proces
> startu.
A jeśli mam jedną zmienną statyczną, która jest kontenerem rzeczy, które będą do
niego dodane później?
Nie mylić statycznego linkowania ze statycznym zarządzaniem obiektami. Mój statycznie
zlinkowany program startuje szybciej, niż się ładuje z dysku, zmienne statyczne nie
mają związku ze statycznym linkowaniem.
> Jeśli chcesz zobaczyć *naprawdę* duże aplikacje to zerknij na rynek EDA.
Tak, wiem. Chyba w każdej dyskusji, jaką tu mieliśmy, miałem sobie tam zerkać. :-)
> Dla ilustracji: zakładając że masz 100MB kodu w dll i musisz szerować to
> między dwa exe (bo taką masz architekturę).
Jeśli w ogóle mam jakąś architekturę, to od razu zakładam, że jest rozproszona (i
zwykle tak jest, prędzej lub później). To znaczy, że dwa procesy raczej nie są na
jednym komputerze (albo nie mogę założyć, że będą) i wtedy dzielenie kodu za pomocą
DLL nie działa - tzn. nie ma żadnej wartości w kontekście oszczędzania pamięci.
Natomiast N komunikujących się statycznie zlinkowanych programów (być może na
niezależnych komputerach) działa wybornie, dając mi pełną swobodę wdrożeniową (której
DLL nie dają).
> Dla ilustracji2: wyobraź sobie że masz aplikację edytora która tylko
> wtedy kiedy trzeba laduje parser gramatyki Perla.
To jest przypadek, który opisałem na samym początku dyskusji (o pluginach, które są
częścią kultury używania programu). Nie mam problemu z tym, że takie coś jest w DLL.
Natomiast nadal mam problem z tym, że takie coś może być użyte tylko raz w czasie
działania programu - i pytanie, czy program zadba o to, żeby takiego niepotrzebnego
DLLa odpiąć. Jak zadba, to fajnie.
Nadal jest jeszcze opcja rozproszona, czyli parser w osobnym procesie (wtedy DLL i
tak nie jest potrzebny). Może to mieć sens, może nie mieć.
Niemniej, przykład binarki na kilka GB wzbudza u mniej więcej wątpliwości, niż mnie
przekonuje. Obliczenia powyżej.
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 20.11.17 17:26 fir
- 20.11.17 17:31 fir
- 20.11.17 22:53 Sebastian Biały
- 20.11.17 23:57 fir
- 21.11.17 13:35 Maciej Sobczak
- 21.11.17 17:17 fir
- 21.11.17 22:21 Sebastian Biały
- 22.11.17 02:02 fir
- 22.11.17 07:52 M.M.
- 22.11.17 07:56 M.M.
- 22.11.17 08:05 M.M.
- 22.11.17 15:33 Maciej Sobczak
- 22.11.17 18:20 Sebastian Biały
- 22.11.17 18:45 s...@g...com
- 22.11.17 18:56 Sebastian Biały
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-28 droga laweta
- 2024-11-28 Co tam się odpierdala w tej Warszawie?
- 2024-11-28 skąd się biorą tacy debile?
- 2024-11-28 JDG i utylizacja sprzetu
- 2024-11-27 Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Bydgoszcz => QA Engineer <=
- 2024-11-28 Zielona Góra => Spedytor międzynarodowy <=
- 2024-11-28 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-27 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-11-27 Zielona Góra => Senior PHP Developer <=
- 2024-11-27 Warszawa => Senior Java Developer <=