数字说话,震惊:TP框架,php,html,php静态页执行效率分析和对比!!
近日打算做一高性能聊天服务器,不知道Thinkphp3.2效率如何?也就是框架效率到底如何?于是测试下。
任务:从数据库读取44条数据。
1、Tp3.2 home->controler->IndexControler->index()
$m=M('login_log');
$login_log_list=$m->select();
$this->assign('login_log_list',$login_log_list);
$this->display('index');
模板:index.html:用标签
2、test2.php(核心代码:)
$result=mysql_query('select * from login_log');
while ($item=mysql_fetch_assoc($result))
3、test2.html:就是test2.php的输出结果。
4、test1.php:就是test2.html的后缀变为php,其它什么都不变。
采用工具:ab.exe 执行1000个连接,100并发。电脑:华硕笔记本cpu:u3400 6G内存。Win7。程序全部在本地执行。
结果如下:
结果:http://chenrenqi.blog.sohu.com/303865454.html
图表这儿不支持,请见上面连接。
由此可见:原生PHP连接数据库,是TP3.2的11倍。时间主要耗费在文件加载和类的建立,及模板解析上了。
而静态文件是php连接数据库文件的21倍左右。是改后缀后的php的4倍左右。
要知道,实际工作中,一个php文件。也就是一个http连接,可能需要多个数据库连接,实际HTML的速度可能要比php快30倍以上,是非常正常的。
------解决思路----------------------
回过你那个帖子··就说了··框架的东西 要实例化一大堆无用的东西,而只是实现一个很小的功能,MVC的框架·每次刷新页面都要去从头到尾实例化一遍,所以···追求高性能···传统的过程写法也许更爽快···至于开发效率和维护问题··就是楼主要考虑的了··
------解决思路----------------------
感谢分享,不过,这只要稍微有点常识的PHP开发者都懂,更不要说要开发高性能应用的人了。
------解决思路----------------------
我觉得这种测试并不公平啊,为框架布置好一套成熟的缓存机制呢?
而且TP的时间都花在哪里了?磁盘IO?实例化对象写内存?模板渲染正则匹配?
这些都可以通过缓存搞定的啊
------解决思路----------------------
哈哈,楼主发我觉得就是分享精神,喷子死!支持楼主
------解决思路----------------------
一个真正的程序员,都应该写原生。
之所以会有框架,是因为框架能大幅推进开发速度。快速建成项目。
不过我看也未必如此,有些网站,和框架逻辑不一致的,用原生更快。
比如TP,为论坛而生,如果我想做个门户页,需要完成类似新浪的首页效果。
这时候,用TP可以累死你。
------解决思路----------------------
这个表情看着看着自己也幸福了
我属于那1%...性能瓶颈多半在MVC超多文件部署的磁盘IO上,高并发下很难受,想办法开启opcode缓存就解决了,这个测试结果也会有很大变化吧
我很感兴趣16楼说的10几个请求的单页面到底属于哪个框架...
另外框架只是提供开发模式和一些常用功能封装,做论坛还是做新浪 这些业务逻辑有什么区别吗?或许我没做过真的不理解,希望大侠们有时间可以科普下
原生php必然比框架快,但我们可以通过优化手段极大的减小这个差距
如果零点几秒的页面速度差距也比开发模式重要,大家都用汇编搞web吧~
虽然小弟经验少,但也想反驳下xu大,缓存并非不自信,而是将高频率的重复工作消耗降到最低
一篇简单的新闻,写操作一辈子可能只有一次,但读操作每分钟都在进行,不需要每次让服务器软件运行脚本,再找数据库要东西,直接静态文件速度快很多,好像静态文件照样可以优化,原本硬盘——内存——网卡缓冲区的中间步骤也可以省略
一些筛选条件复杂的推荐新闻,更没必要每次都让数据库计算的吧
当然过分的缓存肯定是画蛇添足
------解决思路----------------------
其实我是来转图的,高并发的东西,可以考虑换换其它语言。效率也是需要重视,但为效率而去喷就没必要了。
------解决思路----------------------
是的,TP适合做论坛社区,资讯一些小型网站,不适合做大型网站,也从不奢望TP去做大项目
------解决思路----------------------
有时间还可以在测试下yii的效率如何
------解决思路----------------------
框架也用过的,但是有的地方用的就是不方便,
例如:多条件查询之后分页怎么继续获得搜索条件,TP 就这里就很麻烦,获取多个数据得循环好几次,还不一定能获取到!
------解决思路----------------------
聊天室的话node.js可以考虑一下