Gdzie jesteście szpece od pascala i FPC? No gdzie?
Widzisz archiwalną wersję wątku "Gdzie jesteście szpece od pascala i FPC? No gdzie?" z forum pl.comp.lang.pascal
 --- ! daNuta ! ---
Witam!

Ostatnio na pclp wysłałem, ale zero opowiedzi. Tu są sami tacy znawcy
czy to tylko przypadek? Powtórzę więc raz jeszcze...

Ostatnio poszukiwałem starego TopSpeed Pascala (niestety dalej
bezskutecznie) namówiono mnie bym spróbował FPC 1.0.4 bo ponoć
efektywny. Skompilowałem króciutkie źródełko z TP7 pod go32v2.
Oczywiście wszystkie zbędne dyrektywy powyłączane, optymalizacja kodu
pod kątem szybkości na Pentium, jedyny dodany moduł w uses to strings.

Efekty? Ano kiepskie, programik wynikowy w TP7 zajmuje 4688 B a w FPC
102760 B Czasy wykonywania: TP7 - 65 sek. FPC - 93 sekundy. Przecież to
paranoja, że z FPC dostaję takiego giganta. Zapewne 90% to śmieci a
efektywność kodu, która miała być rzekomo lepsza niż w TP okazuje się
znacznie gorsza.

Dodatkowo musiałem zamataczyć ostro z kodem bo FPC za choinkę nie brał
mi takiego wyrażenia (TP łyka to spokojnie i to działa!):

if ((StrPos(pstr2,dest2)-pstr2)=0) then...

gdzie:
dest2 = array [0..255] of char;
pstr2 = array [0..5000] of char;

Ciągle było: Operator is not Overloaded i kiszka... Jak to najłatwiej
obejść?

Próbowałem wg helpa zrobić tak:
if (longint((StrPos(pstr2,dest2))-longint(pstr2))=0) then...

ale wtedy dostaję: Illegal type conwersion i znowu kiszka...

A teraz konkretne pytania do szpeców, których mam nadzieję jest tu
jescze kilku:

1. Co zrobić by znacząco zmniejszyć kod wynikowy pod FPC? Przeca dla
prostego programiku mamy raptem 4 kB w TP7 a FPC mi wysmaża 102 kB. To
niesamowite marnotrawstwo, niech to będzie 2,5 x więcej niż w TP czyli
10 kB ale nie ponad 100!!!

2. Jak najłatwiej obejść w/w błędy kompilacji w FPC?

Pozdrawiam - Nuta      (Remove "da" from my address)

Crytcheck

Ostatnio poszukiwałem starego TopSpeed Pascala (niestety dalej
bezskutecznie) namówiono mnie bym spróbował FPC 1.0.4 bo ponoć
efektywny. Skompilowałem króciutkie źródełko z TP7 pod go32v2.
Oczywiście wszystkie zbędne dyrektywy powyłączane, optymalizacja kodu
pod kątem szybkości na Pentium, jedyny dodany moduł w uses to strings.

Efekty? Ano kiepskie, programik wynikowy w TP7 zajmuje 4688 B a w FPC
102760 B Czasy wykonywania: TP7 - 65 sek. FPC - 93 sekundy. Przecież to
paranoja, że z FPC dostaję takiego giganta. Zapewne 90% to śmieci a
efektywność kodu, która miała być rzekomo lepsza niż w TP okazuje się
znacznie gorsza.


mozesz ustawic dyrektywy tak, aby powstal mniejszy kod (prog bedzie dzialal
wolniej).
dodatkowo po kompilacji potraktuj swojego execa programikiem strip (powinien
byc dolaczony do fpc), ktory troche go obetnie. jezeli chodzi o czasy, to
coz.... niejedne porownania udowodnily, ze fpc jest duzo szybszy. moze
trafiles na jakis szczegolny przypadek albo cos - nie wiem....

Dodatkowo musiałem zamataczyć ostro z kodem bo FPC za choinkę nie brał
mi takiego wyrażenia (TP łyka to spokojnie i to działa!):

if ((StrPos(pstr2,dest2)-pstr2)=0) then...

gdzie:
dest2 = array [0..255] of char;
pstr2 = array [0..5000] of char;



zapis?;)

Andrzej Kaczmarek

Witam!


Witam,

Ostatnio na pclp wysłałem, ale zero opowiedzi. Tu są sami tacy znawcy
czy to tylko przypadek? Powtórzę więc raz jeszcze...


Pisałem na priv, ale zapomniałem wyciąć 'da' z maila i wróciło :)
Ale jeszcze raz odpowiem

Ostatnio poszukiwałem starego TopSpeed Pascala (niestety dalej
bezskutecznie) namówiono mnie bym spróbował FPC 1.0.4 bo ponoć
efektywny. Skompilowałem króciutkie źródełko z TP7 pod go32v2.
Oczywiście wszystkie zbędne dyrektywy powyłączane, optymalizacja kodu
pod kątem szybkości na Pentium, jedyny dodany moduł w uses to strings.


Sam extender go32v2 zajmuje ~50kB. Spróbuj kompilować bez niego. Poza tym
spróbuj użyć opcji  -Xs i -XX kompilatora. Pierwsza z nich usuwa wszystkie
symbole z execa (potrzebno do debugowania zewnętrznym debugerem), a druga
używa bibliotek w trybie 'smart', tzn. dołącza tylko wykorzystywane ich
fragmenty (domyślnie dołączane są AFAIR całe)

Efekty? Ano kiepskie, programik wynikowy w TP7 zajmuje 4688 B a w FPC
102760 B Czasy wykonywania: TP7 - 65 sek. FPC - 93 sekundy. Przecież to
paranoja, że z FPC dostaję takiego giganta. Zapewne 90% to śmieci a
efektywność kodu, która miała być rzekomo lepsza niż w TP okazuje się
znacznie gorsza.


Popróbuj z różnymi ustawieniami optymalizacji oraz wyłącz wszelkie kontrole
przepełnień etc.
Chociaż ja i tak nie jestem zadowolony z optymalizacji FPC. Wszystko kompiluję
pod Delphi, które produkuje świetny kod :)

Dodatkowo musiałem zamataczyć ostro z kodem bo FPC za choinkę nie brał
mi takiego wyrażenia (TP łyka to spokojnie i to działa!):

if ((StrPos(pstr2,dest2)-pstr2)=0) then...

gdzie:
dest2 = array [0..255] of char;
pstr2 = array [0..5000] of char;

Ciągle było: Operator is not Overloaded i kiszka... Jak to najłatwiej
obejść?

Próbowałem wg helpa zrobić tak:
if (longint((StrPos(pstr2,dest2))-longint(pstr2))=0) then...



A teraz konkretne pytania do szpeców, których mam nadzieję jest tu
jescze kilku:

1. Co zrobić by znacząco zmniejszyć kod wynikowy pod FPC? Przeca dla
prostego programiku mamy raptem 4 kB w TP7 a FPC mi wysmaża 102 kB. To
niesamowite marnotrawstwo, niech to będzie 2,5 x więcej niż w TP czyli
10 kB ale nie ponad 100!!!


Patrz wyżej :)

2. Jak najłatwiej obejść w/w błędy kompilacji w FPC?


Patrz wyżej :)

Łukasz Nowicki

Ostatnio na pclp wysłałem, ale zero opowiedzi. Tu są sami tacy znawcy
czy to tylko przypadek? Powtórzę więc raz jeszcze...


Ech, nie lubię prowokacji...

 --- ! daNuta ! ---

mozesz ustawic dyrektywy tak, aby powstal mniejszy kod (prog bedzie dzialal
wolniej).


Już tym kombinowałem, ale uzysk zmniejszenia jest bardzo niewielki.

dodatkowo po kompilacji potraktuj swojego execa programikiem strip (powinien
byc dolaczony do fpc), ktory troche go obetnie.


Dzieki, sprawdzę to.

jezeli chodzi o czasy, to
coz.... niejedne porownania udowodnily, ze fpc jest duzo szybszy.


No z tym chyba bywa jednak różnie.

| if ((StrPos(pstr2,dest2)-pstr2)=0) then...
| gdzie:
| dest2 = array [0..255] of char;
| pstr2 = array [0..5000] of char;

zapis?;)


To jest IMHO normalny warunek. Jeśli znasz działanie funkcji StrPos to
nie ma tu raczej co tłumaczyć a jeśli nie to jest ona opisana w helpie.

Pozdrawiam - Nuta
(Remove "da" from my address. Usuń "da" z mego adresu)

 --- ! daNuta ! ---

| Ostatnio na pclp wysłałem, ale zero opowiedzi. Tu są sami tacy znawcy
| czy to tylko przypadek? Powtórzę więc raz jeszcze...
Pisałem na priv, ale zapomniałem wyciąć 'da' z maila i wróciło :)
Ale jeszcze raz odpowiem
[...]


Dzięki wielkie, już do tego zasiadam. Zobaczymy jakie będą efekty ;-)

Pozdrawiam - Nuta
(Remove "da" from my address. Usuń "da" z mego adresu)

programowanie w pascalu a praca innych programow...
Pascal się muuuuuuuulllllllllllllllllllll­liiiiiiiiiiiiiiiiiiiiiiiiiiiii­ii...
Dla Początkujących: FAQ.Podstawy.Pascal v1.0 15-03-2000
Pascal i drukowanie pod DOS'em na HP 710 - Wielki Problem !!!
  • mnoznik pieniezny
  • za odbieranie poczty glosowej cos sie placi
  • zakup kotla kondensacyjnego w internecie
  • jak wpisac cos do edita w innym programie
  • rapid pruszkow
  • tinctura propolis
  • histologia embriologia
  • scott voltage yz4
  • the dark knight hans zimmer james newton howard
  • Skupisko tematów z for dyskusyjnych : Start