Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Szybkość XML i JSON Android Studio

tom9012 12 Sie 2018 15:26 180 6
  • #1 12 Sie 2018 15:26
    tom9012
    Poziom 8  

    Witam serdecznie

    Napisałem dwie proste aplikacje w android studio:
    1. Parsuje i wyświetla dane z Json
    2. Parsuje i wyświetla dane z Xml

    Chciałbym porównać szybkość z jaką każda z aplikacji wykonuje te zadania.

    Jest możliwość sprawdzenia tego w Android studio, bądź przy użyciu innego programu??

    Pozdrawiam

    0 6
  • #2 13 Sie 2018 15:54
    JacekCz
    Poziom 36  

    1. Używasz jakiś uznanych bibliotek, czy "parsujesz ręcznie"
    1a. jakieś benchmarki są do znalezienia
    1b wątpię aby w AS mieć jakiś wiarygodny benchark. W klasycznej Javie można mówić o jakimś własnym porównaniu, choć niekoniecznie ma sens "produkcyjny"

    2. Jak piszesz "szybkość" to nie jest jedyne kryterium, zresztą nie ma takiej miary. Ilość req/sek. Ilość kB/Mb/sek. Ilość sztuk "czegoś"/sek. throughput (ilość na dłuższy okres czasu i średnia)
    Centyl (wrzuć w google) np 95% poniżej x us ... i inne kryteria
    Jak wrzucisz "low latency java" dowiesz się, że ilość "sztuk" obiektów jest ważna, i że przyhamowania / przerwy następują co jakiś czas.
    Z innej strony że pierwszy raz może być wolniejszy (pierwsze obiegi - ładowanie klas) ...

    3. parsowanie "jednej sztuki" i wyświetlanie ma parametry czasowe trudne do sensownego określenia
    4. w/w aplikacje coś jeszcze robią? W/w struktury danych są obszerne?
    KOD? ciezko się pomaga w "supertajnych" projektach

    0
  • #3 13 Sie 2018 20:26
    ble___
    Poziom 11  

    W tym środowisku jest profiler który o ile się nie mylę wyświetli czas procesora (niezależny od obciążenia całego systemu) wykonania każdej f. .
    Patrz https://developer.android.com/studio/profile/cpu-profiler rozdział Record and inspect method traces.
    Akurat tego profilera nie używałem ale inny bardzo podobny oceniam jako bardzo pomocne przy optymalizacjach czasu wykonania narzędzie.

    0
  • #4 13 Sie 2018 22:07
    tom9012
    Poziom 8  

    Dziękuję bardzo za odpowiedzi.

    Chodzi mi o sprawdzenie z którego formatu szybciej można wyciągnąć dane.

    Pisze prace magisterską w której porównuje te dwa formaty wymiany danych w aplikacji na androida. Muszę porównać który jest lepszy, szybszy itd. Potrzebne mi są jakieś wyniki testów które wykonałem, a za bardzo nie miałem pomysłu jak to zrobić w Android Studio

    Aplikacja jest naprawdę prosta, służy tylko do parsowania i wyświetlenia danych na ekranie.

    ble___ Dziękuję, jutro spróbuje coś z tym pokombinować.

    Pozdrawiam

    0
  • #5 14 Sie 2018 04:39
    ble___
    Poziom 11  

    ble___ napisał:
    W tym środowisku jest profiler który o ile się nie mylę wyświetli czas procesora (niezależny od obciążenia całego systemu) wykonania każdej f. .

    Wygląda na to że się pomyliłem. W tym opisie który wskazałem jest informacja że pomiary czasu przy domyślnej konfiguracji opierają się na timestamp'ach. Inne niż domyślne opcje kofiguracji wyglądają jeszcze gorzej.
    Wydaje mi się że może nawet nie być takiego profilera który by wskazały czas procesora dla pojedynczej f.. Oznaczony jako deprecated DDMS pokazuje chyba czas procesora ale dla wszystkiego naraz.
    Przez "czas procesora" rozumiem to co wyświetla np. program "top" w kolumnie "TIME+" (w tym przypadku wartość będzie uwzględniać np. obsługę GUI).

    0
  • #6 14 Sie 2018 14:37
    JacekCz
    Poziom 36  

    tom9012 napisał:

    Chodzi mi o sprawdzenie z którego formatu szybciej można wyciągnąć dane.

    Pisze prace magisterską w której porównuje te dwa formaty wymiany danych w aplikacji na androida. Muszę porównać który jest lepszy, szybszy itd. Potrzebne mi są jakieś wyniki testów które wykonałem, a za bardzo nie miałem pomysłu jak to zrobić w Android Studio

    Aplikacja jest naprawdę prosta, służy tylko do parsowania i wyświetlenia danych na ekranie.


    Odpowiem dowcipem z komuny, niby że wypracowanie maturalne w ZSRR: kto jest największym człowiekiem w historii i dlaczego Leninn

    Więc z testów ma ci wyjść, że JSON jest szybszy. Uwzględniając narzut sieci / GUI nie sposób tego jakoś poprawnie zrobić.

    PS. Gdybyś dla realnej aplikacji androidowej potrzebował wydajnej transmisji, polecam Apache Thrift (używam od kilku lat), jego bezpośrednią konkurencją jest Google Protocol Buffer (protobuf). Ale to już inna bajka.

    0
  • Pomocny post
    #7 15 Sie 2018 00:59
    ble___
    Poziom 11  

    Chyba dobry pomysł to użycie https://developer.android.com/reference/android/os/Debug#threadCpuTimeNanos() w taki sposób żeby obliczać różnicę z wyników wywołań na początku i końca badanej f..
    To chyba rozwiązuje wskazane problemy (ewentualne I/O sieci umieścić poza badaną f. a GUI jest w innym wątku).
    Znajduję w sieci zestawienia pomiarów szybkości działania różnych parserów dla java samego tylko XML.

    0
  Szukaj w 5mln produktów