witam
jak w bascomie zoptymalizować kod ?
witam
jak w bascomie zoptymalizować kod ?
w ustawieniach jest cos tam, ale z doswiadczenia wiem ze na 1000 linijek kodu
30kb kodu wynikowego po zaznaczeniu optymalizacji kod wynikowy zmniejszyl sie od 26 bajtow :))ta optymalizacja co jest w opcjach to jest do d... ja to bym siê sk³ania³ ku przemy¶leniu programu i kilku eksperymentach.
sprawd¼cie sami ró¿nicê w wielko¶ci kodu wynikowego:
if x > 10 and y < 20 and z = 11 then ... end if
oraz
if x > 10 then if y < 20 then if z = 11 then ... end if end if end if
PC
Tak samo jak w ka¿dym innym jêzyku programowania - napisaæ go w odpowiedni sposób tzn. u¿ywaæ odwo³añ do procedur, podprogramów zamiast pisaæ wielkokrotnie procedury np. odczytu pamiêci czy zegara lub obs³ugi urz±dzeñ nale¿y tworzyæ bloki wykonalne do których bêdziemy skakaæ Call, Goto, Gosub, Function. Wykonywaæ podprogramy dla wielu zmiennych w pêtlach For Next najlepiej jeszcze jak zmienne s± tworzone jako tablice zmiennych, a nie oddzielne zmienne. Mo¿na u¿ywaæ jednej zmiennej do przesy³ania wyników pracy programu, podprogramów lub obliczeñ zamiast tworzyæ ich ca³± masê dla ka¿dej danej. Tworzyæ tylko te zmienne, które s± niezbêdne i takiej wielko¶ci jak± potrzebujemy. Rozkazy, które s± zbyt du¿e w kodzie wynikowym Bascoma mo¿na zast±piæ fragmentem Assemblera.
Dnia 2004-09-24 13:39, Użytkownik blue napisał:
Porównać czy użycie innego polecenia pełniącego taką samą(lub bardzo zbliżoną) funkcję. Np. jeśli jest potrzeba umieszczenia kursora na początku wiersza a wyświetlacz jest jednoliniowy to można użyć polecenia Locate lub Home. Zajmują one różną ilość pamięci i czasami odzyskane w ten sposób kilkanaście bajtów przesądzi o konieczności użycia procka z większą ilością pamięci.
On Behalf Of blue
A pod jakim kątem?
- wielkości kodu
- szybkości działania
- minimalizacji zużycia RAM
- niezawodności *)
- łączności lub rozłączności powyższych
pzdr Artur
*) w szczególności dotyczy pętli oczekiwania, ochrony danych które pozornie nie są używane, itd.
głownie chodzi mi o zoptymalizowanie pod kątem wielkości kodu. zrobiłem układ zegar pcf8583 + termometr DS1821(bez miejsc dziesiętnych) na AT90S2313 i jak bym nie brał wychodzi mi w bascom'ie ponad dopuszczalną granicę
Zrób, tak aby funkcje takie jak: 1WREAD, 1WWRITE, 1WRESET, I2C... nie powtarza³y siê, czyli np. poprzez GOTO. Ponadto je¿eli masz jakie¶ czê¶ci programu, które siê powtarzaj± to te¿ zrobiæ GOTO i tylko raz te instrukcje umie¶æ w programie. Kiedy¶ te¿ robi³em co¶ takiego i siê uda³o. Powodzenia. Konrad
On Behalf Of blue
Mieści się w 2kB.
pzdr Artur PS Piszę o :
-odczyt z PCF8583
-odczyt z DS1821
-wyświetlenie wyniku na LCD z kontrolerem HDcoś tam.
możesz podzielić się kodem ?
On Behalf Of blue
Poszło na prv.
Report : RTC_I_DS Date : 09-28-2004 Time : 09:26:15 Compiler : BASCOM-AVR LIBRARY V 1.11.7.4 Processor : 90S2313 SRAM : 80 hex EEPROM : 80 hex ROMSIZE : 800 hex ROMIMAGE : 68A hex -> Will fit into ROM ROMIMAGE : 1674 dec FLASH USED : 81 %
Have something to add? Share your thoughts — no account required.
Ask the community — no account required