Lord, Striming XML vs JSON |
Lord, Striming XML vs JSON |
12.09.2017, 18:49:23
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Pisałem apkę do wczytywania dużych plików XML i JSON do bazy i mam pewien problem
mam 2 pliki jeden z tymi samymi danymi i do wczytywania XML używam https://github.com/prewk/xml-string-streamer a Json https://github.com/pcrov/JsonReader i okazuje się, że wczytywanie Json trwa x100 wolniej ;( sprawdzałem xdebug profilerem (o ile to dobrze zrobiłem) to za wolne działanie odpowiada ta class JsonReader. Mój kod. Co robię nie tak ;(
Witam czy ja zle zadaje pytania? bo moje tematy zawsze bez odpowiedzi Czego używacie do wczytywania dużych (~200MB ) plików JSON ? Ten post edytował Lord 12.09.2017, 12:16:28 |
|
|
12.09.2017, 20:26:13
Post
#2
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Ja używałem swego czasu tego: https://github.com/MAXakaWIZARD/JsonCollectionParser
Ze 160 MB sobie radził. |
|
|
12.09.2017, 23:54:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Ja używałem swego czasu tego: https://github.com/MAXakaWIZARD/JsonCollectionParser Ze 160 MB sobie radził. Ten też sobie radzi, ale tylko o ile wczytanie 1000 rekordów xml zajmuje mi Time 0.31s a JSON Time 9.34s. |
|
|
13.09.2017, 07:03:45
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Tutaj niestety wychodzi porównanie wydajności pomiędzy kodem napisanym w C + PHP (wbudowany moduł od obsługi XML w C wykorzystywany przez API w PHP) konta czyste PHP. Co tu dużo mówić, PHP jest wolny. Co możesz zrobić?
1. Upewnij się, że korzystasz z PHP 7.x nie 5.x - jest zauważalnie szybszy, ale na pewno nie zniweluje Ci to różnicy. 2. Poszukaj jakiegoś prasera, który został napisany jako moduł w C dla PHP. Wtedy powinieneś uzyskać czasy takie jak w przypadku XML-a. Przy czym nie mam pojęcia czy takowy istnieje. 3. To już jest obejście, nie rozwiązanie problemu: 3.a. Przy pomocy zewnętrznego, wydajnego softu konwertuj sobie JSON do XML przed przetworzeniem. 3.b. W ogóle skorzystaj z innej platformy. |
|
|
13.09.2017, 07:08:11
Post
#5
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Powyższa biblioteka daje lepsze czasy, ale moim zdaniem nie jesteś w stanie zejść poniżej paru sekund w czystym php. Rozwiązaniem porównywalnym do tego z XML jest albo odpalenie parserów w pytonie albo doinstalowanie specjalnych bibliotek do Apacha. Tego ostatniego nie próbowałem, ale jak szukałem dla siebie rozwiązań, było kilka polecanych z rok temu, które ponoć dawały dobre wyniki.
|
|
|
13.09.2017, 13:00:38
Post
#6
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Dziekuję za pomoc. Myślałem, że takie wyniki nie są akceptowalne, ale skoro to norma to lecimy dalej ...
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.05.2024 - 02:11 |