当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《代码执行速度:ASP.NET-MVC与PHP》经验,为你挑选了7个好方法。

我和一位同事就这个问题进行了友好的争论,我个人认为ASP.NET-MVC编译的Web应用程序比用PHP编写的同一个项目更有效/更快地运行.我的朋友不同意.

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

为此,我试图向谷歌寻求答案,试图找到证据证明他是错的,但大多数时候辩论变成了哪个平台更好地开发,成本,安全功能等......为此我真的不在乎这些论点.

我想知道什么是堆栈溢出社区对ASP.NET中使用MVC开发的网站的原始速度/效率的看法与使用PHP开发的完全相同的网站?

有没有人在现实场景中比较两种技术的性能有任何实际例子?

(我觉得对你们中的一些人来说,这可能是一个无关紧要的,也许是愚蠢的论点,但这是一个论点,我仍然希望听到这里的优秀人才的答案)



1> cletus..:

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

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

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

但是PHP脚本基本上都是短暂的.会话信息(通常)基于文件且互斥(session_start()阻止访问相同用户会话的其他脚本,直到session_commit()或脚本完成),而ASP.NET中不是这种情况.除了会话数据之外,在ASP.NET(或Java就此而言,与ASP.NET更相似)中的应用程序上下文中存在对象是相当容易的(也是正常的).

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

作为一个字节码解释平台,ASP.NET在理论上更快,但PHP可以做的限制是如此之高,以至于对大多数人来说无关紧要.例如,互联网上前20个访问过的网站中有4个是PHP.当您开始扩展比任何理论速度差异时,开发速度,稳健性,运行环境的成本等等往往更为重要.

请记住.Net具有原始类型,类型安全性和这些使代码比PHP运行更快的代码.如果您想进行一些不公平的测试,请在两个平台中对一百万个随机64位整数进行排序.ASP.NET会杀死它,因为它们是原始类型,简单数组将比PHP的关联数组更有效(并且PHP中的所有数组最终都是关联的).加上32位操作系统上的PHP将没有本机64位整数,因此会遭受巨大损失.

还应该指出的是,ASP.NET是预编译的,而PHP是即时解释的(不包括操作码缓存),这可能会有所不同,但PHP在这方面的灵活性是一件好事.能够在不弹跳服务器的情况下部署脚本非常棒.只需将其放入即可.辉煌.但最终它的表现不太好.

最终,虽然我认为你在争论什么是真正无关紧要的细节.


卓越而富有洞察力的比较.但我必须指出一点"......在这方面,PHP的灵活性是一件好事.能够在不弹跳服务器的情况下部署脚本非常棒." 您当然不需要在ASP.NET中退回服务器以释放代码更改.
"作为字节码解释平台,ASP.NET" - 无论如何都没有Java或.NET的解释.有一个2阶段编译:1个源代码到字节码/ IL,2个字节码/ IL到本机代码.最后,只执行本机代码.
在这个回复中做出的所有比较似乎是PHP vs .NET(Web表单).关于我可以说PHP在现实世界和实际场景中比.NET更快...我切换到MVC的原因...我仍然希望看到一些比较PHP vs .NET MVC

2> 小智..:

ASP.NET运行速度更快.ASP.NET开发速度更快.购买快速的电脑,如果你做了严肃的商业网络应用程序,享受它

与PHP相比,ASP.NET代码的执行速度要快得多,当它在发布模式下构建,优化,缓存等等.但是,对于网站(除了像Facebook这样的大型玩家),它不那么重要 - 页面渲染时间的最长时间是访问和查询数据库.

在连接数据库中,ASP.NET要好得多 - 在asp.net中,我们通常使用LINQ,它将我们的对象查询转换为SQL Server数据库中的存储过程.此外,与数据库的连接是持久的,一对一的网站,不需要重新连接.

相比之下,PHP无法在请求之间保持sql server连接,它连接,从db中获取数据并销毁,当重新连接数据库时,页面渲染时间往往是20-30%.

此外,整个Web应用程序配置在每次请求时都会在php中重新加载,在asp.net中它会持久存储在内存中.它可以很容易地在像symfony/symfony2这样的大型企业框架中看到,很多渲染时间都是symfony内部处理,其中asp.net只加载了一次,并且不会浪费你的服务器进行无用的工作.

ASP.NET可以在应用程序内存中保存缓存中的对象 - 在php中,您必须将其写入文件,或者使用像memcache这样的hack.使用memcache是​​很多处理并发和危险问题(在文件中存储缓存也有它自己的并发问题 - 每个请求启动apache服务器的新线程和许多请求可以一次工作 - 你必须考虑这些之间的并发线程,它需要大量的开发时间,并不总是工作,因为PHP没有语言中的任何互斥机制,所以你不能以任何方式制作关键部分).

现在关于开发速度的东西:ASP.NET有两个主要的框架(Webforms和MVC),安装了环境,在PHP中你必须得到一个开源框架.在asp.net中没有像php那样的标准框架.

ASP.NET语言是如此丰富,标准库有很多常见问题的解决方案,其中PHP标准库是......裸...他们不能保留一个命名约定.

.NET有类型,其中PHP是动态的,因此在您运行它或编写单元测试之前,它意味着无法控制源代码.

.NET有很好的IDE,其中PHP IDE是平均或平均良好的(PHPStorm仍然比VS + resharper差很多甚至没有它)

当ASP.NET脚手架集成到环境中时,symfony中的PHP脚手架从命令行触发.

如果你有一个像我(一个核心2,2ghz)电脑变慢,开发asp.net页面可不好受,因为你必须重新编译的源代码的任何改变,在PHP代码立即刷新您的项目.

与C#语法相比,PHP语言语法是如此未完成,不固定和裸露.C#中强大的类型和许多灵活的语言功能可以加速您的开发并使您的代码减少错误.


@magallanes LINQ不仅仅是常规的foreach/if,具体取决于LINQ提供程序的实现.例如,检查实体框架.一个简单的封装DAO,没有类型化的检查查询,因为开发人员错过了早晨咖啡,因此可能会进行SQL注入,而IMO则相反

3> ChristopheD..:

在我的(非硬件标记)体验中,Asp.Net在原始速度方面肯定可以与PHP竞争(在某些领域超过).但与许多其他语言选择相关的问题类似,以下陈述(在这种情况下)是有效的(在我看来):

语言x中存在缓慢的错误站点(无论是PHP还是Asp.Net)

语言x中有很棒的快速站点(无论是PHP还是Asp.Net)

我想说的是:(开发人才)将影响整体速度,而不是两者之间的选择(在一些抽象范围内大致相当).

实际上,"整体速度"比较并没有多大意义,因为两者都可以以某种方式相互追赶,除非你处于一个非常特殊的专业领域(你没有告诉我们).



4> bbedward..:

我会说ASP.net

需要考虑的事项:

ASP.net是预编译的

ASP.net通常用C#编写,它应该比PHP执行得更快

当然,差异很小.这两者都有优势,我认为PHP更易于部署,并且可以在任何服务器上运行,而不仅仅是IIS.我非常喜欢ASP.net MVC.



5> Hitesh Modha..:

我做过性能测试.

程序:10000000数字的总和

在此输入图像描述

在此输入图像描述

鉴于输出证明php比C#慢............


确切地说,C#/ .NET执行此测试比PHP快42*倍*.
当HHVM用于PHP时,性能差异是什么?两个测试的代码是什么样的?
OP想要比较.NET MVC,而不是.NET WebForms.通过检查两个输出的大小可以清楚地看出test.aspx页面是用.NET WebForms而不是.NET MVC编码的.通过使用.NET MVC,输出可以与PHP相同.因此,用户的连接速度或互联网账单将无关紧要.

6> pbreitenbach..:

没有任何优化,.net编译的应用程序当然会比php运行"更快".但你是对的,这是一个愚蠢而无关紧要的论点,因为它与吹嘘权利之外的现实世界无关.



7> 小智..:

我是这两种技术(ASP.Net c#和PHP5)的开发专家。经过多年的工作和在实际生产环境中进行比较,这些是我的印象:

首先,不能对它们进行比较,从而形成一个值1.000.000相加的循环,这不是真实情况。

在我的开发环境中将它们与实际生产环境进行比较是不同的。例如:在开发中,ASP.Net默认情况下不使用IIS,请使用具有不同优化功能的内部开发服务器。在开发人员中,没有并发。

所以我的意见是下一个:

循环1.000.000次c#会更快。(无意义)

服务于访问DB,显示图像,具有表格等的真实页面。ASP.Net比PHP慢。

ASPX页面的重量比PHP重10倍,因此最终用户要等待更多时间来获取页面。

ASPX的开发速度比PHP慢,这很重要,因为最终是金钱。我们在PHP中开发的速度比ASP.Net快35%,因为每次您要检查smthg时都必须编译并重新启动。

在大型项目中,长期使用ASP.Net可以更好地避免错误并具有复杂的体系结构。

由于Windows Servers,IIS,...。最后,您需要一个功能强大的服务器来在ASP上容纳与PHP相同数量的用户。例如:我们为ASP.net提供20.000个并发用户,而在PHP中,同一台服务器可以获得30.000个并发用户。

唯一重要的不是循环是否更快。问题是网站是真实的并且正在生产中,它们可以容纳多少用户,页面有多沉重(===来自用户的更多等待时间,更多的服务器净费用,更多的服务器磁盘费用,更多的内存费用)服务器)。尝试并发检查时间,您会看到。

希望能帮助到你。


在您提供一些合理的度量标准或指向实际文章的链接之前,我只能回答:根据我的经验(这包括15年的Web应用程序和应用程序服务器开发,几乎在从PHP到从Python到.NET),PHP是目前运行最慢的。您是否可能将ASP与ASP.NET MVC混淆?因为问题实际上是关于比较用PHP开发的Web应用程序(并且我相信它包括使用PHP MVC框架的假设,但这不是必须的)和用ASP.NET MVC开发的Web应用程序。
良好的反馈。遗憾的是,MS迷们拒绝了您的回答。我个人发现php开发比.Net更快,更轻松,更简单。此外,在严格限制的服务器硬件上,应用程序在实时环境中的响应时间也非常出色。我现在明白为什么Php如此受欢迎
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有