ASP.NET和PHP性能对比

经过一些筛选,只选择一些代表性的看法进行翻译, 对于英文不是太好的朋友比较有用, 如果有翻译和知识点上的错误,请指出。

首先, 排除偏激和未经测试的看法, 让我们来看看interscape和ttuttle怎么说

interscape(MVP) :

PHP是一个脚本语言, 而ASP.NET是一个面向对象, 编译性的语言。你不能让PHP在一个WINDOWS程序中运行, 但是你可以拷贝ASP.NET的代码并把它放到WINFORM程序里面, 而不用太大的修改。 但是如果你要谈及所有情况下的性能, 也许PHP会好一些, 不过我会为WEB开发选择OOP(面向对象编程)而不是step-thru(顺序编程)脚本编程方式。

ttuttle:

我不想去做任何专横武断(outrageous)的声明, 但是让我们来看一下一些事实:

PHP已经被证明比ASP3.0稍微快一些

ASP.NET比ASP3.0快3~5倍(一种类似于PHP的解析性脚本语言)(注:ttuttle这句出自于http://www.asp.net/whitepaper/whyaspnet.aspx)

ASP.NET可以存放在缓存(Output Caching)中, 当页面第一次被访问和编译后, 它可以从缓存中得到。 没有任何页面处理器会比缓存更快。

在默认安装下,ASP.NET是编译性语言, 而PHP和ASP3.0则是解释性语言。

面对这两种孑然不同的解释, 我再来看看ScottGu和 wysiwyg 还有 Xanderno怎么说

ScottGu(http://www.asp.net的版主):

ASP.NET是编译性质而不是解释性质的。 所以语句可以被转换为更快的执行时间。

而PHP方面也有ZEND在出售其收费的编译器ADD-ON.

然而, 我们已经看到Nile benchmark(注:一种测试的性能基准,可以参看其白皮书http://www.gotdotnet.com/team/compare/Nile %20Benchmark%20Results.doc)中, ASP.NET和SQL这种组合的速度比PHP和MYSQL快 2~3倍, 且近乎5倍快于PHP和ORACLE的运行效率(即便ZEND编译器和缓存器已经安装)

wysiwyg:

虽然这个主题是ASP.NET VS PHP,  但是我来说一下我测试的事实却是 ASP要稍快于
ASP.NET在ASP中, 这段代码用了2秒

...................
.....store order info in myRS.....
.....store customer info in myTable.....
....................
Do while not myRS.eof
myTable.open "select customername from tblCustomer where customerID=" &
myRS.fields("CustomerID", myConnection
myArray(0,ubound(myArray,2))=myRS.fields("Ordernumber"
myArray(1,Ubound(myArray,2))=myRS.fields("OrderDate"
myArray(2,Ubound(myArray,2))=myTable.fields("CustomerName"
myTable.close
myRS.movenext
loop

而ASP.NET用了40秒

trace.warn("open conn: " & now)
...................
.....store order info in datatable myDataTable.....
.....store customer info in datatable myCustomer.....
....................
myDataView=new DataView(myCustomer)
for each myRow in myDataTable.rows
myDataview.rowFilter="CustomerID=" & myRow("CustomerID"
myRow("CustomerName"=myDataview(0).row("Customername"
next
trace.warn("finish looping: " & now)

我很希望自己的结果是ASP.NET快于ASP, 但是确相反, 谁能告诉我为什么??

(注: wysiwyg认为他自己做是测试,但是没有说明计算机和操作系统和测试环境的详细情况,也没说明是否属于哪一级别的压力测试)

Xanderno:

在我的不完善的测试中, 采用ACT 作为一种方法。 在一台配置低机器上面, 用ASP通过

一个SQL SERVER上的数据库获取数据, 每秒种我可以获得10~15页数据 。 同样的函数, 用ASP.NET, 每秒种我却可以获得30~40页数据, 使用输出缓存(output caching)后,

它上升为120页/秒。

微软提供一系列压力测试工具。 VS.NET企业版便有ACT, 如果你没有VS企业版, WACT也是一种可行的方法.WAST website -- http://webtool.rte.microsoft.com/

============================

从以上三人的看法, 也许大家已经得出较为正确的答案。 然而这些并不是第一次在ASP.NET和PHP运行效率的讨论。其他讨论, 还可以参看Debate - .NET V. PHP: Top 6 Reasons to Use NET(http://www.sitepoint.com/article/871 )

还有Top 10 .NET Myths Exposed(http://www.webmasterbase.com/article/870)。

当然你有时间, 还可以看看由Owendo Technology做的Web Application Server

Panorama(Web应用程序服务器全景)报告




此外,还有人问了这样一个问题"VB.NET和C哪个更快?"

Daniel P. 这样回答: 他们并没有区别, VB.NET和C都是转换成 IL-Code(中间语言代码)---用来编译主程序的。

(注: 这种说法不一定正确, 两者的编译器是不一样的, 而且这个结论也没有经过严格的压力测试)

最后, 也许大家总是觉得程序员之间这种讨论看起来很funny, 很多人总是带有主观性进行讨论, 连一些编程大师级的老外也像小孩子一样在争论。 但是没有自己所爱的语言, 没有这种狂热又怎会有技术的进步。 



更多空间详情: http://www.iisp.com/design/?s=lily
  
[img]http://game.ali213.net/images/common/sigline.gif[/img]
域名注册,美国虚拟主机,cm域名,虚拟主机,美国主机,韩国主机,香港...
耐思尼克是中国知名网络基础服务服务商,提供国际域名注册,虚拟主机,美国虚拟主机,韩国虚拟主机,香港虚拟主机,,海外域名注册,国外域名注册,COM域名,CN域名,CC域名,AC域...
http://www.iisp.com/?s=lily[url=http://www.iisp.com/design/?s=lily]http://www.iisp.com/design/?s=lily[/url][url=http://www.iisp.com/design/?s=lily]http://www.iisp.com/design/?s=lily[/url]