我与一位同事就此进行了友好的争论,我个人的观点是,ASP.NET-MVC编译的web应用程序将比用PHP编写的同一项目运行得更高效/更快。我的朋友不同意。
不幸的是,我没有任何可靠的数据可以用来支持我的论点。(他也不知道)
为此,我试图在谷歌上寻找答案,试图找到证据来证明他是错的,但大多数时候,争论变成了在哪个平台上开发更好,成本,安全特性,等等。为了这个论点,我真的不关心这些。
我想知道堆栈溢出社区对用MVC开发的ASP.NET网站和用PHP开发的网站的原始速度/效率有什么看法?
在现实世界的场景中,有没有人有比较这两种技术性能的实际例子?
(我意识到,对于你们中的一些人来说,这可能是一个无关紧要的、可能很愚蠢的争论,但这是一个争论,我仍然希望听到S.O.这里的优秀人士的答案。)
发布于 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在这方面的灵活性是一件好事。能够在不跳转服务器的情况下部署脚本是很棒的。只要把它放进去,它就会起作用。非常出色。但从根本上说,它的性能较差。
最终,我认为你在争论什么是真正不相关的细节。
发布于 2014-03-27 20:04:33
我已经做了性能测试。
程序: 10000000个数字的总和
给定的输出证明php比C#慢............
发布于 2009-08-30 07:44:03
在没有任何优化的情况下,.net编译的应用程序当然会比php运行得更快。但你说得对,这是一个愚蠢和无关紧要的论点,因为除了吹嘘的权利之外,它对现实世界没有任何影响。
https://stackoverflow.com/questions/691942
复制相似问题