2010-03-23 12 views
9

Wiem, że Android ma zapakowany parser JSON, ale zastanawiałem się, czy warto było użyć czegoś, co zapewnia lepszą wydajność (np. Jackson - zobacz http://jackson.codehaus.org/)? Ktoś próbował tego?Zastąp standardowy analizator składni JSON Androida, aby uzyskać lepszą wydajność?

+0

Nigdy nie miałem problemów z prędkością Android parsera JSON. Mam nawet plik JSON o pojemności 41kb w jednej z moich aplikacji i ładuje się go w kilkaset ms na G1 (co jest w porządku, ponieważ wystarczy uruchomić tylko raz, gdy uruchomi się aplikacja). –

+0

Bezwzględna prędkość mowy może być akceptowalna. Nadal dobrze jest wziąć pod uwagę, że na zwykłych procesorach stacjonarnych prędkość przetwarzania JSON jest rzędu dziesiątek megs - plik 41 kb zostałby wykonany w ciągu milisekundy.Nawet w przypadku wolniejszych procesorów, które często ma system Android, sto milisekund jest raczej powolne w stosunku do szybkich alternatyw. Tak, odpowiednie narzędzie do pracy. Do codziennego użytku (jak czytanie w pliku konfiguracyjnym przy starcie) wbudowane programy obsługi są zazwyczaj przyzwoite. Wciąż dobrze jest wiedzieć, że jest miejsce na polepszenie, jeśli wymagają tego przypadki użycia. – StaxMan

Odpowiedz

7

Oto couple z porównując wydajność Jackson JSON z istniejącymi JSON, SAX i buforami protokołów. Według autora, Jackson jest szybszy niż SAX lub wbudowany JSON i mniej więcej na poziomie z buforami protokołów. Ta ostatnia część brzmi trochę podejrzanie, ale niezależnie od tego z pewnością wygląda na to, że Jackson działa na Androida i może być wart niektórych eksperymentów.

Nie sprawdziłem jednak rozmiaru JAR. Jeśli jest olbrzymi, chyba że umierasz za dodatkową wydajność JSON, może nie być warta trafienia kosmosu.

+0

Tak, rozmiar pliku jest zdecydowanie na mojej liście możliwych ograniczeń. Sądzę, że gdybym żuł dużo JSON w mojej aplikacji, to może warto dodać Jacksona, ale na razie trzymam się standardowego JSON-a. – Eno

4

Późna odpowiedź, ale nadal może pomóc. Używam Jacksona do analizowania JSON'a z Twittera, a także do utrzymywania bazy danych w postaci Maps. Mapowanie danych w Jackson jest po prostu cudowne. Możliwość odwzorowania JSON bezpośrednio na obiekt jest niesamowita i sprawia, że ​​wszystko jest dużo czystsze.

Nawet jeśli analizowane są tylko proste odpowiedzi, mapowanie danych może pomóc w oczyszczeniu kodu (i bardziej wydajnego). Dla mnie jest to darem niebios, że nie muszę pisać logiki parsującej dla każdego typu funkcji Twitter API.

+0

Dzięki za informację zwrotną - świetnie mieć inne narzędzie w skrzyni, jeśli to konieczne. – Eno

0

Jeszcze jedna perspektywa na te parsery. Przeglądałem Google IO na rok 2009 i naprawdę miło jest mówić o efektywnym korzystaniu z baterii dla twórców aplikacji.

Oto link do tej rozmowy: link

Teraz jak na talk wbudowanym proboszcza dla Androida jest drzewo oparte a te mają być nieskuteczne, jeśli chodzi o żywotność baterii. Czy ktoś naprawdę się temu przyjrzał.

Czytając tę ​​dyskusję, wydaje się, że parser Jackson wydaje się być zwycięzcą we wszystkim. Jest prawie równie szybki, jeśli nie bardziej niż wbudowany, a także oparty na Event/Stream w przeciwieństwie do drzewiastych, co jest lepsze pod względem zużycia baterii.

Po prostu chciałem się podzielić i zdobyć kilka opinii na ten temat.

0

Używam json json do realizacji mojej aplikacji na Androida, która komunikuje się z serwerem za pośrednictwem json-rpc. Chciałbym użyć tego do serializowania/deserializacji żądań i odpowiedzi json-rpc oraz obiektów do przesyłania danych. Używam wersji 2.0 Jackson-json. W ścieżce do budowy umieściłem dwa słoiki: jackson-databind-2.0.0.jar, jackson-core-2.0.0.jar i jackson-adnotations-2.0.0.jar.

Na marginesie: Czy są jakieś implementacje json-rpc dla Androida. oddzielny ruch json-rpc i http byłby dobry. Dużo googlowałem, ale nie znalazłem dobrego generatora json-rpc, serializatora/deserializera jsona, a do transportu będę używał androida.

Powiązane problemy