php与c++性能对比

php与c++性能对比

ID:27739979

大小:1.93 MB

页数:12页

时间:2018-12-05

php与c++性能对比_第1页
php与c++性能对比_第2页
php与c++性能对比_第3页
php与c++性能对比_第4页
php与c++性能对比_第5页
资源描述:

《php与c++性能对比》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、PHP与C++性能比较本文博客链接:http://keping.me/php_vs_cpp/PHP是速度很快的脚本语言,但是用了框架以后好像感觉挺慢的。于是猜测会不会PHP本身也不是很快。如果不是很快,能否采用PHP调用本地动态链接库的形式来提升速度。于是有了下面的对比实验。测试环境1.硬件环境如下图所示。2.软件环境系统:Ubuntu12.10gcc版本:Threadmodel:posixgccversion4.7.2(Ubuntu/Linaro4.7.2-2ubuntu1)php版本:PHP5.3.22(cli)(bui

2、lt:Mar14201320:37:16)Copyright(c)1997-2013ThePHPGroupZendEnginev2.3.0,Copyright(c)1998-2013ZendTechnologiesphp开发环境:LAMP,所有安装包均是通过源码编译安装而成,编译过程中会自动根据本机各项参数进行最优配置。性能比apt-getinstall命令直接安装好。关于以源码包方式搭建LAMP请参考文章:http://keping.me/linux-php-dev-by-source-style/测试方法由于冒泡排序在时

3、间复杂度上相当稳定——O(n2),在最大程度上减少了数据可能带来的影响,故采取计算冒泡排序的运行时间的方法来进行此次实验。对比测试分组分组1:C++直接调用程序内的函数分组2:C++调用打包好的动态链接库文件(.so文件,该文件也是自己写好并打包)分组3:PHP直接调用程序内的函数分组4:PHP调用打包好的动态链接库文件(.so文件,该文件也是自己写好并打包)测试数据数据总体规模为5,500,000个0~999的整数。每一实验组,循环执行次数为30250,000,000,000次。测试所用数据可以从以下地址下载:http:/

4、/keping.me/david-uploads/data/data_cpp.tar.gz测试数据生成代码如下可以看到是0~999的整数,一共有10种测试数据的规模,分别放在十个不同目录下,如下图所示目录名称代表数据的规模,如data_90000表示数据规模为90,000个,同理data_100000表示数据规模为100,000个,依次类推。每一个目录下面包含10组测试数据,以data_100000举例,如下图所示每个文件则包含100,000个0~999的随机数数据文件打包下载地址:http://keping.me/davi

5、d-uploads/data/data_cpp.tar.gz以下是对比测试。首先是“分组1”的测试为了尽量保证算法一致,所以没有采用指针等数据结构,变量的交换也采用最原始的设置中间变量机制,关键代码如下:以下是data_100000目录下num_1数据文件的运行结果文件result_1的部分截图,用时13.74秒第一行输出记录的是每一秒中所含的时钟数;第二行记录的是排序开始之前程序已经运行的时钟数;第三行记录的是排序结束以后程序运行的时钟数;第四行则可以根据前面的数据得出本次排序运行的时间,以秒记,保留两位小数便于对比。下表

6、则是data_100000目录下的所有数据文件(num_1至num_9)的运行结果可以看到,对于100,000级别的数据,进行冒泡排序,“分组1”用了大约13.8秒左右的时间。下面将给出对于不同数据规模(data_10000~data_100000)的平均测试数据其中X轴方向上表示数据规模为10K(即使10,000),20K,,,100K的测试数据。其中Y轴方向上表示测试的平均时间,对每一数据规模均有10个测试数据,此处为平均值。从图中可以看出,结果基本符合y=x2的函数曲线,冒泡排序还是相当稳定的。。。分组2的测试目录结构

7、如下,其中libbubble.so文件即为冒泡排序打包成动态链接库。将会在main函数中调用。分组2与分组1的主要区别也在此,分组1中是在main里调用本地的冒泡排序函数,而分组2则是通过调用.so文件中的冒泡排序函数。运行的测试数据来源与“测试分组1”完全一致,测试结果储存在相应目录下,如下图所示。将测试结果的数据处理以后,得到下图。速度竟然比C++调用自己内部的函数更快,估计是打包成动态链接库的时候,编译器会做一定的优化。分组3的测试接下来是PHP执行冒泡排序的测试。目录结构如下图所示,将调用PHP写的冒泡排序函数进行数

8、据测试。关键代码如下可以看到,为了保证算法上的一致性,代码结构与实验分组一是一样的。由于测试数据运行得比较慢,所以写了一个shell脚本来执行,shell脚本如下图所示(未完整截图)将分组3的测试结果的数据处理以后,得到下图。可以看到在相同数据规模下,分组3的运行时间要远远大于分组1以及分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。