🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#192
Author: w... Marcin Witek
Date: Tue, 16 Jan 1996 00:00
44 lines
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
#193
Author: l... Jarek Lis
Date: Tue, 16 Jan 1996 00:00
43 lines
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