Re: TC65 prenos dat a filesystem

nevrklap@volny.cz nevrklap@volny.cz
Úterý Srpen 12 20:05:14 CEST 2008


Diky, 
zni to rozumne... Uz jsme to trochu poresili, pouzivali jsme kus ciziho
kodu ve kterem byla docela bota s nacitanim dat z filesystemu. Ponekud
divne chovani ciloveho programu ale zustalo, zda se ze tvurce si s prislusnou
normou (uvedena ve specifikaci) moc hlavu nelamal.
P.



>Dobry vecer,

zkusim par postrehu:

1. filesystem -  nepouzivejte, pokud nemusit ... je velmi pomaly, hodi

se jen pro data, ktera nechcete ztratit po vypnuti. Pokud s nim delate,

udelejte si pomocne metody a ctete vzdy po vetsich blocich, ne byte po
byte.

2. poskladat si data, nez je poslete pres OutputStream metoda 
write(byte[] b) do CSD spojeni - dobry napad. Udelejte si buffer z 
bytoveho pole, o nejake vetsi delce a ten pouzivejte na kompletaci dat.

Nealokujte zbytecne nove buffery s kazdou novou zpravou, vyuzijte jeden

stale existujici.

3. predpokladam ze pouzivate vice vlaken, takze si vlakno, ktere zrovna

nemusi vykonavat nejakou cinnost na chvilku uspavejte   
Thread.sleep(50). Ostatni dostanou vice casu. Nebo si jej zastavte 
pomoci synchronizaci - napriklad: nemusim cist seriovy port, kdyz zrovna

cpu data do GSM-CSD (seriak na TC65 ma interni buffer, takze se to da

zvladat i bez ztraty dat nebo pouzijte CTS/RTS) ...
Nastavovani priorit u vlaken neni legrace, u mne nevedlo k dobrym vysledkum.

4. GarbageCollector - zjednodusene - pousti se automaticky, pokud 
dochazi volna pamet pro alokaci novych objektu/promennych, nebo kdyz
je
cas ... uspane thready atp. Kdyz chcete, aby se volal co nejmene v 
nevhodne chvile, pak si optimalizujte kod:

a) snazte se vytvaret objekty/promenne s dlouhou platnosti a znovu je

pouzit, nez neustale tvorit nove.
b) nedelte kod do spousty metod - jejich volani je prace se zasobnikem,

alokace lokalnich promennych, uvolnovani .... Musite si vybrat mezi 
citelnosti a vykonnosti kodu.
c) pokud vite, co delate (zrovna jste uvolnil nejake objekty), pak si

zavolejte GC rucne. Vyplati se u objektu udelat  objekt=null; coz GC
pomuze.

Pri vyse popsanem se vam pres CSD podari poslat data vcelku, aniz by
se
zadrhla.

Oja





Další informace o konferenci Hw-list