Jan Lipmann

Jan Lipmann CEO/Founder @ Likomp
iOS Development

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Witam szanowne grono.

Mam taki mały problem.

Mianowicie stworzyłem aplikacje, która listuje wszystkie pliki na dysku po czym zapisuje informacje o nich do bazy. Taki archiwer. Mozna pozniej znajdywac szybko jaki plik na jakim jest dysku i w jakim katalogu.

Problemu nie ma przy dyskach z mala iloscia plikow, natomiast jesli liczba tych plików rosnie i rosnie to diametralnie zwalnia listowanie.

Wszystkie pliki jako obiekty zapisuje do zmiennej typu ArrayCollection i mam wrażenie, że tu jest pies pogrzebany. Przy coraz większej ilości obiektów w tej zmiennej zwalnia program.

Czasami zdaża się, że duży dysk jest listowany przez 5 godzin ...

Macie jakis pomysł?

Myślałem, aby zapisywac te pliki asynchronicznie do bazy SQLite tymczasowo a pozniej pracowac z danymi z tej bazy ...

Nie wiem jak poprawic performance

Moze jakis Native Extension?

Pomocy ....
Szymon Rybka

Szymon Rybka Flex Developer

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Może vector był by szybszy?

konto usunięte

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Może na początek nie używać klasy File, tylko same nazwy i ścieżkę do pliku, potem warto posortować po nazwie, lub użyć array list i wyszukiwać poprzez metodę getItemIndex. To tak na pierwszy rzut mi przyszło do głowy.
Jan Lipmann

Jan Lipmann CEO/Founder @ Likomp
iOS Development

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

@Szymon dzięki, ale nie wydaje mi sie aby to znacznie poprawilo wydajnosc, napewno troche poprawi, bo wymuszony jest typ obiektów, natomiast ich "waga" pozostaje ta sama

@Paweł masz chyba racje bede zapisywal zserializowane interesujace mnie dane np do JSON-a, sortowanie i wyszukiwanie nie ma sensu, gdyz to i tak wszystko leci do bazy poprzez AMF po kolei ... :)

Troche jestem zawiedziony ta wydajnością

konto usunięte

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Możesz zerknąć czy rozwiązanie tego buga ci pomoże ?
http://bugs.adobe.com/jira/browse/SDK-17916 - w którejś wersji SDK mieli chyba dodać property żeby móc wyłączyć pewne mechanizmy automatyczne wewnątrz arraycollection, ale się nie wgryzałem w to.

Możesz też wymienić na Array - wiem wiem, ciężej się go używa ale potrafi być o wiele szybszy.
Jan Lipmann

Jan Lipmann CEO/Founder @ Likomp
iOS Development

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Dzieki @Bogumił, wątek który przytoczyłęś opisuje problem z deserializacja ArrayCollection po stronie Flex-a. Mój problem w tym przypadku nie dotyczy AMF i deserializacji tylko szybkosci działania podczas dorzucania duzej ilości obiektów do AC. Im jest im wiecej tym wolniej to działa :(

konto usunięte

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Jak wyżej nigdy nie używaj File, ja jej od pewnego czasu nie wierzę ;) i nie bez powodu adobe stworzyło file promisses w AIR 2.0, stwórz jakąś klasę z nativePatch, typ i wszystko inne możesz mieć z łatwością tu odsyłam do lektury ASDoc :)
Na ArrayCollection wyłącz auto update, wywal bindowanie znów ASDoc i google z przykładami.
Ewentualnie własna implementacja i ominięcie klasy proxy :), ale przy pewnej ilości danych to już lepiej z sqlite skorzystać, skoro jest, ale też tam można zrobić coś w minutę albo w godzinę ;)
Rafal Szulc

Rafal Szulc rozwiazuje problemy,
optymalizuje
procesy, 2G/3G DB
confi...

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

...
. Mój problem w tym przypadku nie dotyczy AMF i deserializacji tylko szybkosci działania podczas dorzucania duzej ilości obiektów do AC. Im jest im wiecej tym wolniej to działa :(

Moze zamiast dorzucac do ArrayCollection dodawaj obiekty do Array poprzez:
myArray.push(obiekt)
Po zczytaniu wszystkiego tworzysz ArrayCollection tak:
var myAC:... = new ArrayCollection(myArray);

Dla moich zastosowan (np parsowanie duzych plikow) roznica byla znaczaca.
Jan Lipmann

Jan Lipmann CEO/Founder @ Likomp
iOS Development

Temat: [FLEX AS3] Problem z dużą ilością obiektów w ArrayCollection

Temat rozwiązany :)

Używam: Vector.<FileInfo> , gdzie FileInfo to obiekty stworzonej przeze mnie klasy, która przetrzymuje tylko potrzebne mi parametry (zmienne).

Przyspieszenie wyniosło ok 600%. To mi chyba wystarczy :)

Dzieki wszystkim za pomoc :)



Wyślij zaproszenie do