Thread View: pl.comp.programming
2 messages
2 total messages
Started by w... Marcin Witek
Tue, 16 Jan 1996 00:00
Watcom C/C++ 10.0
Author: w... Marcin Witek
Date: Tue, 16 Jan 1996 00:00
Date: Tue, 16 Jan 1996 00:00
44 lines
2586 bytes
2586 bytes
Bawilem sie ostatnio w porownywanie Watcom C/C++ 10.0 i DJGPP. Robilem cos
takiego: pisalem jakas procedurke w C i kompilowalem na obu kompilatorach,
potem robilem disasemblacje i porownywalem to co wyszlo. I coz... bylo bardzo
podobnie ale Watcom czasem sie prawie kompromitowal, proponuje wpisac cos
takiego :
char *ekran=0xa0000; // dla Watcom
char *ekran=0xe00a0000 // dla DJGPP
int i,j;
for(i=0;i<24;i++)
for(j=0;j<80;j++)
*(char *)(ekran+i*160+j*2)=15;
optymalizacje: DJGPP -O2
Watcom -4r -oneatx -zp4
Watcom wstawia tam zupelnie niepotrzebnego imula, DJGPP robi to wyraznie
lepiej. W ogole DJGPP wszystkie mnozenia przez stale zamienia na przesuniecia
a Watcom nie ( niektore zamienia a niektore nie, ciekawe... ).
Dla Watcoma mozna sobie ustalic jak maja byc przekazywane parametry, czy
przez stos czy przez rejestry a nawet okreslic dokladnie przez ktory rejestr
ktory parametr ( bardzo fajna rzecz ).
Watcom przy optymalizacji na 486 ustawia poczatek wszystkich petli na
paragraf ( 16 bajtow ) co przy kilku zagniezdzonych szybkich petlach powoduje
wolniejsze dzialanie niz przy wyrownaniu do 4 bajtow ! ( np. -3r ).
Troche szkoda ze Watcom nie ma instrukcji asm i wszystkie wstawki
asemblerowe trzeba robic jako osobne funkcje co nie zawsze jest wygodne
( np. taka wstawka moze miec 2 instrukcje: mov ax,0x13; int 0x10 ).
Watcom 10.0 posiada calkiem nowy debugger WD i jest on naprawde niezly,
jestem gotow stwierdzic ze jest lepszy niz TD. Poza tym Watcom kompiluje
nawet 6 razy szybciej niz DJGPP. NIestety zaden z nich nie posiada srodowiska
pod DOS ( co mi akurat nie przeszkadza ).
Z tego wszystkiego wychodzi ze DJGPP powinien dawac szybszy kod niz
Watcom, no i tu wlasnie sie zdziwilem... . Otoz napisalem taki troche wiekszy
program w C++ ( kilka klas, funkcje wirtualne, rysowanie na ekranie, wszystko
wlasne procedurki bez korzystania z zadnych bibliotek graficznych itp.
i wszystko napisane w czystym C/C++ bez asemblera ), i to wszystko chodzilo
szybciej pod Watcom. A poza tym Watcom ma standardowy asembler ( mozna
korzytac z TASMa ), a DJGPP taki dziwny UNIXowy.
Wit
Re: Watcom C/C++ 10.0
Author: l... Jarek Lis
Date: Tue, 16 Jan 1996 00:00
Date: Tue, 16 Jan 1996 00:00
43 lines
2181 bytes
2181 bytes
Marcin Witek (w...@zeus.polsl.gliwice.pl) wrote: : Bawilem sie ostatnio w porownywanie Watcom C/C++ 10.0 i DJGPP. Robilem cos : : char *ekran=0xa0000; // dla Watcom : char *ekran=0xe00a0000 // dla DJGPP : : int i,j; : for(i=0;i<24;i++) : for(j=0;j<80;j++) : *(char *)(ekran+i*160+j*2)=15; : : Watcom wstawia tam zupelnie niepotrzebnego imula, DJGPP robi to wyraznie : lepiej. W ogole DJGPP wszystkie mnozenia przez stale zamienia na przesuniecia : a Watcom nie ( niektore zamienia a niektore nie, ciekawe... ). Szkoda, ze nie przyslales kodu w obu przypadkach. Czy djgpp wykryl ze obslugujesz prawie ciagly obszar pamieci, czy tylko standardowo zrezygnowal z mnozen? Bo taka rezygnacja w ciemno nie koniecznie musi byc rozsadna. O ile dobrze pamietam to na 486 mnozenie intow pochlanialo parenascie cykli, ale mnozenie przez 160 juz bylo szybsze. a kazda instrukcja to 2 cykle, wiec z mnozeniem moze byc szybciej. W szczegolnosci na pentiumie przy dobrym programie. : Troche szkoda ze Watcom nie ma instrukcji asm i wszystkie wstawki : asemblerowe trzeba robic jako osobne funkcje co nie zawsze jest wygodne : ( np. taka wstawka moze miec 2 instrukcje: mov ax,0x13; int 0x10 ). A nie ma czegos takiego jak Borlandowskie _EMIT_ ? umieszczalo w kodzie zadane bajty... : Z tego wszystkiego wychodzi ze DJGPP powinien dawac szybszy kod niz : Watcom, no i tu wlasnie sie zdziwilem... . Otoz napisalem taki troche wiekszy : program w C++ ( kilka klas, funkcje wirtualne, rysowanie na ekranie, wszystko : wlasne procedurki bez korzystania z zadnych bibliotek graficznych itp. : i wszystko napisane w czystym C/C++ bez asemblera ), i to wszystko chodzilo : szybciej pod Watcom. lepsza biblioteka obiektowa? Jarek.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads