2013-03-05 69 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