2013-03-05 15 views
8

Ho bisogno di memorizzare molti array bidimensionali all'interno del database e non sono sicuro di cosa usare: serialize o implode. Così ho fatto alcuni test, per scoprire quale sta lavorando più velocemente e sono giunti alla conclusione che era serialize:Serialize o Implode

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

Quindi la domanda: Perché è implodere + esplodere modo molto più lento poi serialize + unserialize?

PS: ho già trovato la domanda this, ma non è esattamente quello che sto chiedendo.

risposta

1

mia idea è che explode/implode operano sulle stringhe è per questo che, mentre serialize/unserialize uscita/ingresso di stringa al molto fine/inizio. Probabilmente più stringhe si implode e la stringa più lunga si explode, più lento è, hai provato?

Quale usare non so, dipende se in seguito si desidera gestire la stringa di output, penso che la stringa d serialize sia più difficile da analizzare. Ma per memorizzarlo nel database o nel file userei serialize.

+0

Questo suona in qualche modo ragionevole. E sì, più grande è l'array, più implode/esplode è più lungo. Ho già provato anche questo. – Peon

+0

@DainisAbols intendevo che non è una dipendenza lineare. "Implode'ing quattro stringhe esattamente 2 volte più lentamente di implodere due stringhe? Immagino sia di più; e l'implosione di otto corde richiederebbe più tempo di quello di implodere due corde quattro volte (tutte le corde dovrebbero essere della stessa lunghezza, naturalmente). – Voitcus

+0

'Implodere 2 elementi: 1.8937180042267 secondi', ' Implodifica 4 elementi: 2.4380650520325 secondi', 'Implica 8 elementi: 3.6058769226074 secondi' Non esattamente due volte, ma vicino ad esso, mentre serializza le modifiche con lo stesso tipo di avanzamento, ma tasso più lento. – Peon