2013-03-05 65 views
8

我需要在數據庫內存儲大量二維數組,並且不確定要使用什麼:serializeimplode。所以我做了一些測試,以找出哪一個是工作速度更快,得出的結論是serialize序列化或Implode

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

所以問題:爲什麼破滅+爆炸然後連載+反序列化這麼慢得多

PS:我發現this問題已經存在,但它並不完全是我所問的。

回答

1

我的想法是,explode/implode操作字符串,這就是爲什麼,而serialize/unserialize輸出/輸入在非常結尾/開頭的字符串。可能更多的字符串你implode和更長的字符串你explode,它是更慢,你試過了嗎?

要使用哪一個我不知道,這要看你以後是否希望處理輸出字符串,我想serialize d字符串比較難分析。但要將其存儲在數據庫或文件中,我會使用serialize

+0

這聽起來不知何故是合理的。是的,陣列越大,內爆爆炸的工作時間越長。我也已經測試過了。 – Peon 2013-03-05 08:23:42

+0

@DainisAbols我的意思是它不是線性依賴。 「內爆」四條琴絃比兩條琴絃慢兩倍?我想這更多;並且內化八個字符串需要比四次內化兩個字符串更多的時間(所有字符串應當是相同的長度)。 – Voitcus 2013-03-05 08:30:54

+0

'Implode 2 elements:1.8937180042267 seconds', 'Implode 4 elements:2.4380650520325 seconds', 'Implode 8 elements:3.6058769226074 seconds' 不完全是兩次,但接近它,而序列化更改爲相同的進程類型,但速度較慢。 – Peon 2013-03-05 08:37:19