2013-03-05 22 views
8

Potrzebuję przechowywać wiele tablic dwuwymiarowych w bazie danych i nie byłem pewien, co używać: serialize lub implode. Więc zrobiłem kilka testów, aby dowiedzieć się, który z nich pracuje szybciej i doszedł do wniosku, że był serialize:Serialize lub Implode

Execution times: 1'000'000 
Serialize: 1.4974119663239 seconds 
Implode: 2.5333571434021 seconds 
Explode: 4.0185871124268 seconds 
Unserialize: 1.6835169792175 seconds 

Więc pytanie: Dlaczego implode + eksplodować więc znacznie wolniej następnie serialize + unserialize?

PS: Znalazłem już this pytanie, ale nie jest to dokładnie to, o co proszę.

Odpowiedz

1

Moja idea jest taka, że ​​explode/implode działać na łańcuchach dlatego, natomiast serialize/unserialize wyjście/wejście ciąg na samym końcówkę/początku. Prawdopodobnie im więcej ciągów jesteś implode i dłuższy ciąg explode, tym wolniej, próbowałeś?

Których użyć Nie wiem, to zależy, czy później chcesz obsługiwać ciąg wyjściowy, myślę, że d ciąg jest trudniejsze do parsowania. Ale do przechowywania w bazie danych lub pliku użyłbym serialize.

+0

To brzmi jakoś rozsądnie. I tak, im większa macierz, tym dłuższa implikacja/eksplozja działa. Już to przetestowałem. – Peon

+0

@DainisAbols Miałem na myśli, że nie jest to zależność liniowa. Czy 'implode'ing cztery ciągi są dokładnie 2 razy wolniejsze niż improwizacja dwóch ciągów znaków? Chyba to coś więcej; imponowanie ośmiu łańcuchów zajęłoby więcej czasu niż czterokrotne implowanie dwóch ciągów (wszystkie ciągi powinny mieć tę samą długość). – Voitcus

+0

'Implode 2 elementy: 1.8937180042267 sekund',' 'Implode 4 elementy: 2.4380650520325 sekund', ' Implode 8 elementów: 3.6058769226074 sekund'' Nie dokładnie dwa razy, ale blisko niego, podczas serializowania zmian z tym samym typem progresji, ale wolniejsze tempo. – Peon