asp.net运行速度比php快70倍?不可思议! 本帖最后由 ivbnet 于 2012-05-16 02:06:38 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 唠叨哥我放到linux上面跑也差不多啊。我怀疑是不是asp.net 空for是不是没处理去了。楼主能不能在for里加些什么运算吧。 你在linux上面也做了asp.net的测试?要使运行速度测试有效,至少也要在同一台机器上由于它的asp.net代码有问题,所以没有测试使用他原帖中的asp代码做对比的确是 asp 快于 phpwindow2008 iis7.5 php5.3.6 fastcgi但这并不能说明什么问题,不就是一个空结构吗? 想到了鸟哥的一篇文章,说的是php编译执行的时候不做任何语义优化,上面的代码会忠实的loop10000000次,其它预编译语言会做语义优化,对这种空结构,优化之后或许就不对它进行循环了http://www.laruence.com/2012/04/01/2571.html 一个for语句比PHP快点就能说明asp.net比PHP 快。这也太那个什么的了吧。 刚看错了,是70倍,csdn里连自己回复的帖子都没有编辑和删除的权限,真是无语 asp.net 最吸引我的,也是我觉得最有用的地方是创建 web service太容易了,可以用于php,java,除此之外没啥突出亮点。貌似 asp.net代码没有问题吧,我测试成功的呀。 php 页面执行时间: 759.9 毫秒php 页面执行时间: 741.7 毫秒php 页面执行时间: 744.4 毫秒php 页面执行时间: 740.5 毫秒php 页面执行时间: 743.9 毫秒------------------------------------------win7 iis7.5。fastCGI前面那个aspx的不能在网页下显示哈,有错误:编译器错误消息: BC30691: “DateTime”是“System”中的类型,不能用作表达式。 我用的是vs2005,没有问题呀,看我完整代码using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { System.DateTime startTime = System.DateTime.Now; for (long i = 1; i < 10000000; i++) { } System.DateTime endTime = System.DateTime.Now; System.TimeSpan ts = endTime - startTime; Response.Write("页面执行时间:" + ts.Milliseconds.ToString("0.000") + " 毫秒"); }} 没有啊。只是win与linux简单测一下。感觉php是老老实实都跑了一千万次…… 可能asp.net for几次后就不for了、去打酱油了 这样有一定程序上提高了论坛活跃度。 =_=#14楼给for里加些运算操作吧、让他干点事再比较…… 这样测试没意义,你每个web程序里只做一次运算,然后重复访问多次,这样:ab -c 100 -n 10000000 http://xxxx/test.phpab -c 100 -n 10000000 http://xxxx/test.aspx然后,再看一下结果。一般情况下,web应该先访问数据库,读出数据,做一个计算,再返回,这样比较才客观一些。做静态计算或读静态页面都没什么意义,设想一下如果php在Linux下用lighttpd做server读静态文件,那还怎么比。 没用过php,但是直觉来讲,这样是无法比较具体的效率的。如果PHP是解释型语言,没有预编译的过程的话,执行这样的操作肯定是会慢于编译型。 1,改为这样,测一下var n:long = 0;for (long i = 1; i < 10000000; i++){ n += i;}2,放到页面上面测。 我改变观点了既然您认为 asp.net 优于 php ,那么你就 asp.net 就是了,何必抢 phper 的饭碗 按需所取吧,这里讨论的只是在win平台的执行效率比较。说不定,win下跑asp.net还比不上linux下跑php呢。那时,你是不是也说只能用php而不用asp.net了呢?每种语言都有其优势的一面,而现在,单单懂一种语言的程序员是很少了吧。多一份了解,就多一份选择。 编译器会对空FOr优化的。所以你得加点运算。让它不优化 只能说明asp.net在大量for循环上面优化的比较好,但不能得出结论“asp.net运行速度比php快70倍”这个测试只是空循环,如果循环里面加上操作,就不见得是这个结果了。 PHP的实现的确是慢得可以.以至于像python和ruby这种以慢著称的语言都比它快...不过它胜在接口丰富,而且大多免费...再说了,搞个WEB应用而已,多数对性能不敏感,实在不行就喊客户加服务器嘛.有性能需求的,都直接用C++去了,谁还用PHP.另外,这个测试相对来说权威一点.http://shootout.alioth.debian.org/u32/bench.php?test=all&lang=all 空循环,是会优化的。加个测试,sm = 0;for i = 1:100000 if rand >0.5 //这样,就彻底避免了编译器的对循环的特殊优化 sm = sm + i; else sm = sm - i; endend 没理由呀, 我做过asp.net 与php多年, 总感觉php快很多。.net 要中间编译呀。 php 直接 --> C php执行常规的计算确实比其他语言慢,这是常识,没有啥奇怪的啊。它的优势不在这里。 楼主确定是for 循环完全执行完之后得到的systemtime endtime? 没有意义啊,这种编译器都做了优化的。基本没有等循环算完。我用过DELPHI测试,感觉觉得比C快。但编译器是明显自动优化了的。 php是每次访问都要编译的,他不会自己优化,需要程序员有好的编码习惯。php的空for循环是会编译的,而.net不会执行,所以php会慢一些。如果在for循环里加一些运算,二者的速度应该差不多。 汗 我怎么自己 用win8 IIS8 .net4.5 PHP5.32 测试 PHP 明显要比.NET块呢 加一个int tmp=0;for(...){tmp = tmp+1;}在看看 C#,java 是编译语言,PHP是脚本语言(解释性语言) 应该使用stopwatch来监控,这种计算时间是错误的。 php 输出js问题 php时间函数 下面两种sql,哪种效率好 请教一sql语句 ☆★☆★☆★SourceGuardian的注册码谁有?我想用他加密,但是只有试用版☆★☆★ SMTP问题 急求!怎么把数据库中的图片显示出来呀! 我第一次写的技术文档,希望有经验的朋友们来看看.... 用php连接informix的问题,急,请大侠帮忙啊~~ curl_exec() has been disabled for security reasons (急!!)PHP + MYSQL查询结果分页显示问题 php xPath 解析xml文件 问题
楼主能不能在for里加些什么运算吧。
要使运行速度测试有效,至少也要在同一台机器上
由于它的asp.net代码有问题,所以没有测试
使用他原帖中的asp代码做对比
的确是 asp 快于 php
window2008 iis7.5 php5.3.6 fastcgi但这并不能说明什么问题,不就是一个空结构吗?
其它预编译语言会做语义优化,对这种空结构,优化之后或许就不对它进行循环了
http://www.laruence.com/2012/04/01/2571.html
刚看错了,是70倍,csdn里连自己回复的帖子都没有编辑和删除的权限,真是无语
asp.net代码没有问题吧,我测试成功的呀。
php 页面执行时间: 741.7 毫秒
php 页面执行时间: 744.4 毫秒
php 页面执行时间: 740.5 毫秒
php 页面执行时间: 743.9 毫秒
------------------------------------------
win7 iis7.5。fastCGI前面那个aspx的不能在网页下显示哈,有错误:
编译器错误消息: BC30691: “DateTime”是“System”中的类型,不能用作表达式。
我用的是vs2005,没有问题呀,看我完整代码using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.DateTime startTime = System.DateTime.Now;
for (long i = 1; i < 10000000; i++)
{
}
System.DateTime endTime = System.DateTime.Now;
System.TimeSpan ts = endTime - startTime;
Response.Write("页面执行时间:" + ts.Milliseconds.ToString("0.000") + " 毫秒"); }
}
没有啊。只是win与linux简单测一下。
感觉php是老老实实都跑了一千万次……
#14楼
给for里加些运算操作吧、让他干点事再比较……
ab -c 100 -n 10000000 http://xxxx/test.aspx然后,再看一下结果。一般情况下,web应该先访问数据库,读出数据,做一个计算,再返回,这样比较才客观一些。做静态计算或读静态页面都没什么意义,设想一下如果php在Linux下用lighttpd做server读静态文件,那还怎么比。
var n:long = 0;
for (long i = 1; i < 10000000; i++)
{
n += i;
}2,放到页面上面测。
既然您认为 asp.net 优于 php ,那么你就 asp.net 就是了,何必抢 phper 的饭碗
按需所取吧,这里讨论的只是在win平台的执行效率比较。说不定,win下跑asp.net还比不上linux下跑php呢。那时,你是不是也说只能用php而不用asp.net了呢?每种语言都有其优势的一面,而现在,单单懂一种语言的程序员是很少了吧。多一份了解,就多一份选择。
不过它胜在接口丰富,而且大多免费...
再说了,搞个WEB应用而已,多数对性能不敏感,实在不行就喊客户加服务器嘛.有性能需求的,都直接用C++去了,谁还用PHP.
另外,这个测试相对来说权威一点.http://shootout.alioth.debian.org/u32/bench.php?test=all&lang=all
if rand >0.5 //这样,就彻底避免了编译器的对循环的特殊优化
sm = sm + i;
else
sm = sm - i;
end
end
.net 要中间编译呀。 php 直接 --> C
我用过DELPHI测试,感觉觉得比C快。但编译器是明显自动优化了的。
int tmp=0;
for(...)
{
tmp = tmp+1;
}
在看看