To tyle jeōli chodzi o minimalne wymagania. Ja ze swej strony polecam co najmniej 486 DX 33, 8 mega RAM,
bardzo szybki twardy i kawaīek wolnego miejsca na twardym (tak z 30 MB), gdyū instalacja minimalna nie jest
zbyt sensowna (bez helpów ?). Osobiōcie pracowaīem prawie rok na takiej konfiguracji i uwaūam, ūe jest ona
wystarczajāca. Aktualnie uūywam P150 ale dalej nie narzekam na zbyt szybkā kompilacjė. Wynika to z faktu,
ūe szczególnie liczy siė twardy - przydaje siė jakiō cache dyskowy i mnóstwo pamiėci. I mimo ūe mój Caviar
jest jednym z najszybszych aktualnie dysków, kompilacja nie przebiega najlepiej. Cóū, wina kompilatora.
Procesor jest mniej waūny - chyba 486DX4/100 Mhz to caīkowicie wystarcza. Przydaje siė za to tzw. L2 cache
w iloōci np. 512KB i pīyta PCI.
Gdzie to moūna dostaź?
Kraków, Poland: ftp.cyf-kr.edu.pl: pub/mirror/Simtel.Net/gnu/djgpp
Poznaļ, Poland: ftp.man.poznan.pl: pub/simtelnet/gnu/djgpp
Warszawa, Poland: ftp.icm.edu.pl: pub/simtelnet/gnu/djgpp
Stockholm, Sweden: ftp.sunet.se:
London, UK: sunsite.doc.ic.ac.uk
Concord, California, USA: ftp.cdrom.com
California, USA: ftp.digital.com,
a na innych serwerach podobnie.
Ile to pojedzie - czyli osiāgi
Na pewno wiele osób interesuje, jak niekomercyjny program wypada w porównaniu z kombajnami typu
Watcom czy tez Borland. Okazuje siė, ūe prėdkoōź skompilowanego programu jest co najmniej taka, jak
konkurencji. Czėsto zdarza siė jednak (przy wīāczonej optymalizacji, a przeīāczników optymalizacji jest
duuuuuūo) ūe kompilat spod DJGPP jest szybszy. Generalnie - nieśle. Ale jest takūe rysa w tym nieskazitelnym
dotād portrecie - bardzo czėsto zdarza siė, ūe niektóre programy dziaīajā wolniej niū 16bitowe aplikacje
skompilowane Borlandem. Wynika to z faktu, ūe uūywanie funkcji I/O (np. obsīuga dysku) odbywa siė w trybie
rzeczywistym (real mode) i program musi siė przeīāczyź z trybu prodected na tryb real, co trwa spory kawaīek
czasu. Oprócz tego, ūeby DOS potrafiī odczytaź dane naleūy je przenieōź do bufora, który jest zlokalizowany w
1MB pamiėci. Tak wiėc, aby zapisaź dane program musi przenieōź dane (w porcjach po 16KB) do pierwszego
megabajta, potem przeīāczyź siė w tryb real, potem uūyź odpowiedniej funkcji BIOSu, a na koniec znów
przeīāczyź siė w tryb protected. To niestety powoduje duūe straty prėdkoōci. Dla przykīadu, odczytanie 2MB w
DOSie zajmuje 1 sekundė, a spod DJGPP juū 1.2 - 1.5 sekundy. Niby duūo, bo od 20% do 50% róūnicy, ale
chyba nikt nie przesyīa wiėcej niū 100 MB (skād wziāź tyle pamiėci), ūeby róūnica byīa odczuwalna.
Oczywiōcie liczby sā przykīadowe, na szybkich pci'owych maszynach róūnica jest nieodczuwalna.
Cóū, to juū koniec tego artykuīu. Mam nadziejė, ūe udaīo mi siė przybliūyź Wam wspaniaīe narzėdzie, jakim
jest DJGPP.
Podsumowanko
Zalety:
- szybkoōź kompilatu
- 32 bitowy kod
- praca w trybie chronionym
- caīkowita darmocha
- īatwoōź przenoszenia programów z UNIXa
- setki przeīāczników optymalizacyjnych
- optymalizacja pod okreōlony procesor, np. -m486
- wiele dobrych bibliotek pod DJGPP (obsīuga .mod, biblioteki graficzne, okienkowe)
- ciāgīa pamiėź bez segmentacji
- automatycznie tworzony swap file (z CWSDPMI)
- dobra dokumentacja
Wady:
- strasznie wolna kompilacja (szczególnie z wīāczonymi opcjami optymalizacji)
- duūa zajėtoōź dysku
- duūa wielkoōź pliku po kompilacji - typowy "Hello World" zajmuje ok. 50 KB jako .exe
- kod tylko pod DOS (zero Windowsów)
- dziaīa na procesorach 386 i wyūszych - ūegnajcie XTki i ATki 286 (a moūe to zaleta ?)
- maīa prėdkoōź przy operacjach dyskowych (trudno.. coō za coō)
- okropne moim zdaniem rozwiāzanie help'a - program info przypomina nieco "man" znany z UNIXa, ale
obsīuga tego programu doprowadza mnie do szaīu, polecam wiėc RHIDE (dla przyzwyczajonych do
borlandowskich okienek)
- brak edytora - to tylko kompilator, bez ōrodowiska zintegrowanego (jeōli Ci go brak - znów polecam RHIDE)
- specyficzna konstrukcja niektórych procedur oraz sposób alokacji pamiėci
(a wīaōciwie jej dealokacji - iloōź wolnej pamiėci zwracana przez procedury
nie zmienia siė po zwolnieniu bloku pamiėci - okazuje siė ūe jest ona co prawda
"wolna", ale pozostaje "zarezerwowana" - moūna z niej skorzystaź, ale bez napisania
poolera, który by liczyī iloōź alokowanej i dealokowanej pamiėci nie moūna
uzyskaź wiarygodnych danych. Chīopaki z listy comp.os.msdos.djgpp twierdzā, ūe
to nie bīād tylko pewna cecha DJGPP. Dzieje siė aby zyskaź szybkoōź, no cóū, kosztem
wygody)
Zakoļczenie
No i to tyle. Na zakoļczenie, chciaībym gorāco poleciź ten kompilator wszystkim, którzy
korzystajā z GNU C pod UNIXem, fanów C, tym, którzy nie majā za co kupiź Watcoma, poczātkujācym
programistom - wspaniaīe biblioteki graficzne pod DJGPP i wszystkim, którzy lubiā popróbowaź róūnych
kompilatorów. Jest to produkt na którym siė nie zawiodīem - np. kocham kiedy
DJGPP wychodzi mi z bīėdem, wypisujāc zawartoōź rejestrów i kod bīėdu ale siė,
do cholery nie zawiesza. Jest to piėkna sprawa dla maīo doōwiadczonych programistów.
Poza tym w koļcu nie problemu z pamiėciā. Oprócz tego istnieje wiele doskonaīych
dodatków - jak np. RHIDE, Allegro (biblioteka graficzna), biblioteki do obsīugi
Sound Blastera. Na tyle zaufaīem DJGPP, ūe napisaīem pod nim komercyjnā grė,
za którā juū nawet co nieco udaīo siė dostaź w postaci banknotów Narodowego
Banku Polskiego.
LUDO/VD
e-mail: pajonk@ajax.umcs.lublin.pl
homepage: http://ajax.umcs.lublin.pl/~pajonk/ w tym /~pajonk/odjgpp.html
Opracowane na podstawie dokumentu djgppfaq.html (http://www.delorie.com/djgpp/v2faq/faq202s.zip) oraz
wīasnych doōwiadczeļ z tym kompilatorem zdobytych od marca 1996 roku.