近日打算做一高性能聊天服务器,不知道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倍以上,是非常正常的。
回复讨论(解决方案)
90%的企业站点,内部OA,并发访问量不大。所以用TP还是不错的。如果对性能要求有很大。可以采用其它的。
又在炒现饭了?
总所周知,框架带来的是开发上的高效率。就是框架的作者也从不讳言运行效率较低
php 后缀必然要启动一个php解析器的进(线)程,任何代码的执行都是要花费时间的
把 html 后缀改成 php 后缀也是如此,只有在php解析器分析完整个文档并确认没有任何php语法成分后才会原样输出
C 语言编译后的机器指令要比汇编语言的多出30%。但即便是在当时资源昂贵的情况下,程序员们还是选择了 C 语言。
这是为什么呢?原因就在于 C 语言就像他的名字一样简单明了
高性能聊天服务器。。。。你这个数据不能说明任何问题。
觉得TP不好可以选择C或者JAVA,就像你会英语,我非得让你说法语,你会吗?
追求?行效率的,可以用C?成php?展?用。或者你的框架就是C?的一?php?展。
回过你那个帖子··就说了··框架的东西 要实例化一大堆无用的东西,而只是实现一个很小的功能,MVC的框架·每次刷新页面都要去从头到尾实例化一遍,所以···追求高性能···传统的过程写法也许更爽快···至于开发效率和维护问题··就是楼主要考虑的了··
又在炒现饭了?
总所周知,框架带来的是开发上的高效率。就是框架的作者也从不讳言运行效率较低
php 后缀必然要启动一个php解析器的进(线)程,任何代码的执行都是要花费时间的
把 html 后缀改成 php 后缀也是如此,只有在php解析器分析完整个文档并确认没有任何php语法成分后才会原样输出
C 语言编译后的机器指令要比汇编语言的多出30%。但即便是在当时资源昂贵的情况下,程序员们还是选择了 C 语言。
这是为什么呢?原因就在于 C 语言就像他的名字一样简单明了
你懂不表达大家都懂。懂性能之后,潜意思就知道如何编程来优化了。
觉得TP不好可以选择C或者JAVA,就像你会英语,我非得让你说法语,你会吗?
慢不一定不好。逻辑有问题。就好像我说某人长得漂亮,不代表他很有能力。
感谢分享,不过,这只要稍微有点常识的PHP开发者都懂,更不要说要开发高性能应用的人了。
我觉得这种测试并不公平啊,为框架布置好一套成熟的缓存机制呢?
而且TP的时间都花在哪里了?磁盘IO?实例化对象写内存?模板渲染正则匹配?
这些都可以通过缓存搞定的啊
哈哈,楼主发我觉得就是分享精神,喷子死!支持楼主
这应该是框架的一个通病吧。
99%人觉得性能瓶颈在数据库,测试结果显示,性能瓶颈在数据库,是的,但我们很难改变。我们可以改变的部分千万不要忽视,除了数据库外,其它部分程序瓶颈也会存在。而且相差极大!
还有一点就是,既然知道框架性能极差,为什么不改观呢?
本人现在新做一款框架,目标:极简单,极强大,极快速,极傻瓜。
打算将大家都忽视的前端
让我们享受极快速开发的同时,也能享受极速度。
初步目标:是原生php的一半的速度(不知道是否能做到,这是目标)。
我觉得这种测试并不公平啊,为框架布置好一套成熟的缓存机制呢?
而且TP的时间都花在哪里了?磁盘IO?实例化对象写内存?模板渲染正则匹配?
这些都可以通过缓存搞定的啊
你幸福啥,兄弟!^_^
一套成熟的缓存机制呢??都是多次测试,没有见缓存有多大效果。
我觉得这种测试并不公平啊,为框架布置好一套成熟的缓存机制呢?
而且TP的时间都花在哪里了?磁盘IO?实例化对象写内存?模板渲染正则匹配?
这些都可以通过缓存搞定的啊
我也原以为缓存有多大作用,测试结果发现,缓存没有多大效果。
缓存只有在高并发才会显出优势。
平常小网站,不需要做什么缓存。
同样逻辑下,原生码的速度要比框架快得多。这是因为框架要加载太多东西。
比如一个简单页面,原生码直接解析输出,只需要一次请求。但框架往往把这个页面分成十几个小部分,光请求就要多出十几倍。
一个真正的程序员,都应该写原生。
之所以会有框架,是因为框架能大幅推进开发速度。快速建成项目。
不过我看也未必如此,有些网站,和框架逻辑不一致的,用原生更快。
比如TP,为论坛而生,如果我想做个门户页,需要完成类似新浪的首页效果。
这时候,用TP可以累死你。
那我就是那 1% 了
须知:数据库并不特指基于文件系统的SQL(即便是SQL,也有基于内存的表),还有基于内存的noSQL
框架本身并没有什么不好,框架是开发经验的总结。
但为框架而框架就不好了
传统的多入口架构,路由的指派是由 web 服务器完成的
而一些框架为了所谓的单入口效果,硬将本该 web 服务器完成的工作拿来自己去做。
这段话,怎么就有非法词组了呢
这个测试没有任何意义。。。。
感觉PHP越来越像个四不像了,效率甚至还不及Python
追求?行效率的,可以用C?成php?展?用。或者你的框架就是C?的一?php?展。
暂时还没有这样做,也许以后会这样做。
这个表情看着看着自己也幸福了
我属于那1%...性能瓶颈多半在MVC超多文件部署的磁盘IO上,高并发下很难受,想办法开启opcode缓存就解决了,这个测试结果也会有很大变化吧
我很感兴趣16楼说的10几个请求的单页面到底属于哪个框架...
另外框架只是提供开发模式和一些常用功能封装,做论坛还是做新浪 这些业务逻辑有什么区别吗?或许我没做过真的不理解,希望大侠们有时间可以科普下
原生php必然比框架快,但我们可以通过优化手段极大的减小这个差距
如果零点几秒的页面速度差距也比开发模式重要,大家都用汇编搞web吧~
虽然小弟经验少,但也想反驳下xu大,缓存并非不自信,而是将高频率的重复工作消耗降到最低
一篇简单的新闻,写操作一辈子可能只有一次,但读操作每分钟都在进行,不需要每次让服务器软件运行脚本,再找数据库要东西,直接静态文件速度快很多,好像静态文件照样可以优化,原本硬盘??内存??网卡缓冲区的中间步骤也可以省略
一些筛选条件复杂的推荐新闻,更没必要每次都让数据库计算的吧
当然过分的缓存肯定是画蛇添足
其实我是来转图的,高并发的东西,可以考虑换换其它语言。效率也是需要重视,但为效率而去喷就没必要了。
是的,TP适合做论坛社区,资讯一些小型网站,不适合做大型网站,也从不奢望TP去做大项目
有时间还可以在测试下yii的效率如何
你就是那个闲着没事做的那种!框架就是为了快速开发而生。
为了快速开发而生,不代表速度快。这些基础的研究不搞清楚,你再忙,也瞎忙。
我最近在研发一个高速框架。肯定比你忙。
你就是那个闲着没事做的那种!框架就是为了快速开发而生。
我晕,在我看来框架除了提升开发效率;其余对开发者没有任何好处;
用了一年框架连最基本的sql估计都不会写;
更别提框架中的各种初始化,各种new了;
我晕,在我看来框架除了提升开发效率;其余对开发者没有任何好处;
用了一年框架连最基本的sql估计都不会写;
更别提框架中的各种初始化,各种new了;
原本你会就会,原本不会你就不会。
有时间还可以在测试下yii的效率如何
本打算用YII也测试下的,但前天学习了下,感觉YII作者水平实在太菜。就没有必要测试了。
原本以为YII是高大上,了解后,才知道是?丝中的菜鸟。
一个真正的程序员,都应该写原生。
之所以会有框架,是因为框架能大幅推进开发速度。快速建成项目。
不过我看也未必如此,有些网站,和框架逻辑不一致的,用原生更快。
比如TP,为论坛而生,如果我想做个门户页,需要完成类似新浪的首页效果。
这时候,用TP可以累死你。
水平还极菜,在1年以内吧。多编程吧。会有进步的。
真是相当的震惊,一个10+年web开发经验的人对于缓存的理解竟然是这样的。
看来这几个帖子纯粹就是浪费我的时间,不在回复楼主。
真是相当的震惊,一个10+年web开发经验的人对于缓存的理解竟然是这样的。
看来这几个帖子纯粹就是浪费我的时间,不在回复楼主。
对了,哪里看到有10+web经验的人了?我最多3年而已。
框架也用过的,但是有的地方用的就是不方便,
例如:多条件查询之后分页怎么继续获得搜索条件,TP 就这里就很麻烦,获取多个数据得循环好几次,还不一定能获取到!
聊天室的话node.js可以考虑一下
请使用汇编,如果效率还不达标,可以使用二进制,如果还是慢,我也没办法了
头一次听到人说YII很烂,TP很高大上的说法。。我也只能呵呵了 别出来装逼了好吗??