序列化或者合并字符串

8

我需要将许多二维数组存储在数据库中,但不确定该使用什么: serialize还是implode。因此,我进行了一些测试,以找出哪个速度更快,并得出结论是serialize

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

所以问题是:为什么implode+explodeserialize+unserialize慢得多?
PS:我已经找到了这个问题,但它并不完全是我要问的。
1个回答

1
我的想法是 explode/implode 操作的是字符串,因此,而 serialize/unserialize 在最后/最开始输出/输入一个字符串。可能你 implode 的字符串越多,explode 的字符串越长,速度就会越慢,你试过吗?
我不知道该使用哪个函数,这取决于您是否希望稍后处理输出字符串,我认为 serialize 的字符串更难解析。但是要将其存储在数据库或文件中,我会使用 serialize

那听起来还算合理。是的,数组越大,implode/explode 的工作时间就越长。我已经测试过了。 - Peon
@DainisAbols 我的意思是它不是线性依赖关系。将四个字符串implode是否比将两个字符串implode慢两倍?我猜多于两倍;将八个字符串implode所需的时间将比四次将两个字符串implode所需的时间更长(当然,所有字符串的长度应相同)。 - Voitcus
组合2个元素:1.8937180042267秒, 组合4个元素:2.4380650520325秒, 组合8个元素:3.6058769226074秒。 虽然不完全是两倍,但接近于两倍,而序列化使用相同的进度类型,但速率较慢。 - Peon
所以我错了,压缩更多的元素在某种程度上更快。那么连接字符串一定是最薄弱的环节。 - Voitcus
@DainisAbols 你可以将 implode 函数 的实现与 serialize 函数 进行比较。 - Anirudh Ramanathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接