Article View: pl.comp.programming
Article #192Watcom C/C++ 10.0
From: 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
Technical Details
Message-ID:
<4dg463$2hd@hades.polsl.gliwice.pl>Path:
mbox-mo1.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
From: w...@zeus.polsl.gliwice.pl (Marcin Witek) Subject: Watcom C/C++ 10.0 Date: 1996/01/16 Message-ID: <4dg463$2hd@hades.polsl.gliwice.pl> X-Deja-AN: 135490207 organization: Politechnika Slaska w Gliwicach newsgroups: pl.comp.programming MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit