主题:  ASP.NET和PHP性能对比

lilcy00

职务:普通成员
等级:1
金币:0.0
发贴:245
注册:2008/12/18 16:55:41
#12010/10/7 16:48:59
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.b86.net/design/?s=lily