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)