search
Homephp教程php手册PHP中json_encode、json_decode与serialize、unserialize的性能

今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何?

于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数。
据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。
于是我决定动手实验,证实一下同事所说的情况是否属实。
实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。
用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间。
以下是PHP 5.2.13环境其中一次测试结果:
代码如下:
json : 190
serialize : 257
json_encode : 0.08364200592041
json_decode : 0.18004894256592
serialize : 0.063642024993896
unserialize : 0.086990833282471
DONE.

以下是PHP 5.3.2环境其中一次测试结果:
代码如下:
json : 190
serialize : 257
json_encode : 0.062805891036987
json_decode : 0.14239192008972
serialize : 0.048481941223145
unserialize : 0.05927300453186
DONE.

这次实验得到的结论是:
json_encode和json_decode的效率并没有比serialize和unserialize的效率高,在反序列化的时候性能相差两倍左右,PHP 5.3执行效率比PHP 5.2略有提升。
以下是我用来做测试的代码:
代码如下:
$target = array (
'name' => '全能头盔',
'quality' => 'Blue',
'ti_id' => 21302,
'is_bind' => 1,
'demand_conditions' =>
array (
'HeroLevel' => 1,
),
'quality_attr_sign' =>
array (
'HeroStrength' => 8,
'HeroAgility' => 8,
'HeroIntelligence' => 8,
),
);
$json = json_encode($target);
$seri = serialize($target);
echo "json :\t\t" . strlen($json) . "\r\n";
echo "serialize :\t" . strlen($seri) . "\r\n\r\n";
$stime = microtime(true);
for ($i = 0; $i {
json_encode($target);
}
$etime = microtime(true);
echo "json_encode :\t" . ($etime - $stime) . "\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
json_decode($json);
}
$etime = microtime(true);
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
serialize($target);
}
$etime = microtime(true);
echo "serialize :\t" . ($etime - $stime) . "\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
unserialize($seri);
}
$etime = microtime(true);
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n";
echo 'DONE.';
?>
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Nginx负载均衡的性能测试与调优实践Nginx负载均衡的性能测试与调优实践Oct 15, 2023 pm 12:15 PM

Nginx负载均衡的性能测试与调优实践概述:Nginx作为一款高性能的反向代理服务器,常用于负载均衡的应用场景。本文将介绍如何进行Nginx负载均衡的性能测试,并通过调优实践提升其性能。性能测试准备:在进行性能测试之前,我们需要准备一台或多台具备较好性能的服务器,安装Nginx,并配置反向代理与负载均衡。测试工具选择:为了模拟真实的负载情况,我们可以使用常见

Java开发:如何使用JMH进行性能测试和基准测试Java开发:如何使用JMH进行性能测试和基准测试Sep 20, 2023 pm 02:00 PM

Java开发:如何使用JMH进行性能测试和基准测试引言:在Java开发过程中,我们经常需要测试代码的性能和效率。为了准确地评估代码的性能,我们可以使用JMH(JavaMicrobenchmarkHarness)工具,它是专门为Java开发者设计的一款性能测试和基准测试的工具。本文将介绍如何使用JMH进行性能测试和基准测试,并提供一些具体的代码示例。一、什

PHP邮件对接类的性能测试和调优方法PHP邮件对接类的性能测试和调优方法Aug 07, 2023 pm 06:51 PM

PHP邮件对接类的性能测试和调优方法引言随着互联网的发展,电子邮件已成为人们日常沟通的重要方式之一。在开发网站或应用程序时,经常需要使用PHP来发送和接收电子邮件。为了提高邮件发送和接收的效率,我们可以对PHP邮件对接类进行性能测试和调优。本文将介绍如何进行这些测试,并提供一些代码示例。性能测试性能测试可以帮助我们了解邮件对接类的性能瓶颈,并找出优化的方向。

PHP中如何使用PHPUnit进行性能测试PHP中如何使用PHPUnit进行性能测试Jun 27, 2023 pm 02:49 PM

PHPUnit是PHP中非常流行的单元测试框架,它也可以用作性能测试。本文将介绍如何使用PHPUnit进行性能测试。首先,需要了解PHPUnit的一些基本概念。PHPUnit中的测试用例(TestCase)被定义为一个类,该类继承了PHPUnitFrameworkTestCase类。测试用例类中有一个或多个测试方法(testmethods),每个测试方法使

如何进行C++代码的性能测试?如何进行C++代码的性能测试?Nov 02, 2023 pm 02:21 PM

如何进行C++代码的性能测试?概述:在软件开发过程中,性能测试是一项非常重要的任务。对于C++代码来说,性能测试可以帮助开发人员了解代码的执行效率,找到性能瓶颈,并对其进行优化。本文将介绍一些常用的C++代码性能测试方法和工具,帮助开发人员提高代码性能。测试方法:1.时间测量:C++代码性能测试的最简单方法之一是使用时间测量函数来记录代码执行所需的时间。通

C#开发中如何处理关键性能指标和性能测试C#开发中如何处理关键性能指标和性能测试Oct 09, 2023 pm 04:49 PM

C#开发中如何处理关键性能指标和性能测试,需要具体代码示例在C#开发中,性能是一个非常重要的考虑因素。当我们开发一个项目时,无论是桌面应用程序、Web应用程序还是移动应用程序,我们都希望它能够运行得足够快,并且在使用过程中不会出现卡顿或延迟的情况。因此,我们需要关注和处理关键性能指标,并进行性能测试来确保应用的高性能和稳定性。处理关键性能指标处理关键性能指标

Java开发:如何进行性能测试和负载测试Java开发:如何进行性能测试和负载测试Sep 21, 2023 am 11:25 AM

Java开发:如何进行性能测试和负载测试,需要具体代码示例引言:随着互联网和软件行业的快速发展,性能测试和负载测试在软件开发中变得越来越重要。通过对软件系统进行性能测试和负载测试,可以评估系统的可靠性、稳定性和吞吐量等关键性能指标。本文将介绍Java开发中如何进行性能测试和负载测试,并提供一些具体的代码示例。一、性能测试的基本概念和方法:1.1性能测试的定

Gin框架中的性能测试和优化技巧详解Gin框架中的性能测试和优化技巧详解Jun 23, 2023 am 09:15 AM

Gin框架是一个基于Go语言的轻量级Web框架,它具有高效、快速和易于使用的特点,在很多领域都有广泛的应用。但是,在日常业务开发中,针对Gin框架的性能测试和优化技巧并不容易,本文就为大家详细介绍一下。一、Gin框架的性能测试压力测试工具在进行性能测试之前,首先需要准备好相应的测试工具,这里推荐两个常用的压力测试工具:ApacheBench和wrk。Apac

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.