首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >代码执行速度: ASP.NET-MVC与PHP

代码执行速度: ASP.NET-MVC与PHP
EN

Stack Overflow用户
提问于 2009-03-28 01:04:40
回答 7查看 68.8K关注 0票数 75

我与一位同事就此进行了友好的争论,我个人的观点是,ASP.NET-MVC编译的web应用程序将比用PHP编写的同一项目运行得更高效/更快。我的朋友不同意。

不幸的是,我没有任何可靠的数据可以用来支持我的论点。(他也不知道)

为此,我试图在谷歌上寻找答案,试图找到证据来证明他是错的,但大多数时候,争论变成了在哪个平台上开发更好,成本,安全特性,等等。为了这个论点,我真的不关心这些。

我想知道堆栈溢出社区对用MVC开发的ASP.NET网站和用PHP开发的网站的原始速度/效率有什么看法?

在现实世界的场景中,有没有人有比较这两种技术性能的实际例子?

(我意识到,对于你们中的一些人来说,这可能是一个无关紧要的、可能很愚蠢的争论,但这是一个争论,我仍然希望听到S.O.这里的优秀人士的答案。)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-28 01:18:27

这很难进行比较,因为各个堆栈的差异意味着你最终会以不同的方式做同样的事情,如果你为了比较的目的而做同样的事情,这不是一个非常现实的测试。

PHP是我喜欢的,它的最基本的形式是加载每个请求,解释然后丢弃。它在这方面非常像CGI (考虑到它大约有15年的历史,这并不奇怪)。

多年来,已经进行了各种优化来提高性能,例如,最显著的是使用APC的操作码缓存(以至于APC将成为PHP 6的标准部分,而不是像现在这样的可选模块)。

但是PHP脚本基本上是暂时的。会话信息(通常)是基于文件的,并且是互斥的(session_start()会阻止其他脚本访问相同的用户会话,直到session_commit()或脚本结束),而ASP.NET并非如此。除了会话数据之外,在ASP.NET (或ASP.NET更类似于它)中的应用程序上下文中存在对象是相当容易(也很正常)的。

这是一个关键的区别。例如,PHP中的数据库访问(使用mysql、mysqli、PDO等)是暂时的(尽管有持久连接),而.Net/Java几乎总是使用持久连接池,并在此基础上创建ORM框架等,其缓存超出了任何特定的请求。

作为一个字节码解释平台,ASP.NET理论上更快,但是它所能做的限制太高了,对大多数人来说都是无关紧要的。例如,在互联网上访问量最大的20个网站中,有4个是PHP。开发速度、健壮性、运行环境的成本等。当你开始扩展时,往往比任何理论上的速度差异都要重要得多。

请记住,.Net具有原始类型、类型安全等特性,这些特性会使代码的运行速度超过它的运行速度。如果你想做一些不公平的测试,可以在两个平台上对一百万个随机的64位整数数组进行排序。ASP.NET将杀死它,因为它们是基本类型,简单数组将比关联数组更有效(并且PHP中的所有数组最终都是关联的)。另外,在32位操作系统上的PHP不会有本地的64位整数,因此将会受到很大的影响。

还应该指出的是,ASP.NET是预编译的,而PHP是动态解释的(不包括操作码缓存),这可能会有所不同,但PHP在这方面的灵活性是一件好事。能够在不跳转服务器的情况下部署脚本是很棒的。只要把它放进去,它就会起作用。非常出色。但从根本上说,它的性能较差。

最终,我认为你在争论什么是真正不相关的细节。

票数 71
EN

Stack Overflow用户

发布于 2014-03-27 20:04:33

我已经做了性能测试。

程序: 10000000个数字的总和

给定的输出证明php比C#慢............

票数 18
EN

Stack Overflow用户

发布于 2009-08-30 07:44:03

在没有任何优化的情况下,.net编译的应用程序当然会比php运行得更快。但你说得对,这是一个愚蠢和无关紧要的论点,因为除了吹嘘的权利之外,它对现实世界没有任何影响。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/691942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档