ASP.NET比拼PHP,谁是速度之王?

如题所述

第1个回答  2022-09-29

  ASP NET与PHP是目前Web开发的主流技术 众多Web开发人员都对两种技术的安全性 执行效率 扩展性等方面进行比较 本文测试了不同平台不同应用环境下ASP NET与PHP的执行效率

  刚刚在 月编程语言排行榜上取得历史性突破的PHP在Web开发领域最到的对手可能就是基于微软 NET技术的ASP NET 近日 微软的Joe Stagner在博客上发表了一系列文章比较了PHP和ASP NET性能方面的文章 引起了来自双方程序员的大量回应 Joe表示 他会将这样的测试持续下去 并寻求更为合适的方式 以获得对实际项目来说尽可能有参考价值的结论

  Joe在博客中称 一般来说 作性能测试的目的是要尝试证明一方比令一方要快 我受雇于微软 同时编写PHP和ASP NET代码 我在 NET出现之前就在使用PHP 两个东西我都很喜欢

  所以 我很难说出哪个更好 当我说PHP好话时 我的微软同事们会写信来批评我 而当我发表倾向于ASP NET的言论时 我的PHP朋友们会说我是微软的托

  我进行这个测试是因为每个人都对PHP的性能有自己的看法(Windows vs Linux & vs ) 却没人能给出明确的数据

  ASP NET比拼PHP的测试环境如下

  ◆所有的测试都在同一台机器上运行(拥有 G内存和 G 转硬盘的Toshiba Tecra M )

  ◆Ubuntu 和Windows Server 标准版分别安装于独立(但相同)的硬盘中

  ◆Linux使用Apache Windows使用IIS 作为各自的Web服务器

  ◆双方的操作系统都进行了完整的patch或升级

  ◆双方的系统和运行时都没有进行额外的性能增强

  从实验结果上看 PHP在Linux和Windows的执行性能各有千秋

  ◆纯粹的语句执行在Windows上表现更好

  ◆函数调用在Windows上更快

  ◆对象的创建和访问 对于PHP 来说在Linux上更快 但是对于PHP 来说则是Windows更快

  ◆类库调用在Linux上快得多(如在Ubuntu上进行加密要比Windows要快 到 倍)

  Linux与Windows平台对比

  在Linux上访问文件性能略高于Windows 不过Windows上文件复制的性能要比Linux慢 % 可能是ACL高级安全的缘故

  在Linux上访问MySQL要比Windows快不少 而且在Windows上运行PHP 的情况则更为恶劣(不过从下面PostgreSQL的情况上来看 这应该是糟糕实现的缘故)

  PostgreSQL在两个平台上的性能非常接近( 个操作的差距在 秒之内)——无论是PHP 还是PHP Windows上表现都略胜一筹

  Windows上PHP 访问MS SQL Server的性能稍逊于在Linux上访问MySQL(此时还没有面向PHP 的SQL Server支持)

  对于纯粹的PHP执行性能来说 Linux和Windows相差无几 这不会成为选择Linux或Windows作为部署平台的决定性因素 如果你在构建一个应用程序 那么PostgreSQL可能是更好的选择 因为它在两个平台上的表现都很优秀

  如果你的应用程序必须使用MySQL 那么选择Windows就需要早些计划扩展性问题了(个人认为Sun不太可能为Windows优化MySQL的性能)

  PHP的第一个版本的SQL Server驱动程序要比MySQL或PostpreSQL要慢一些 但这应该不会成为问题 第二个版本的驱动器正在开发之中 它会带来性能提升

  在Joe看来 全面来看 PHP和IIS团队在执行性能上已经做的非常成功 接下来就需要各开源程序的团队(Drupal WordPress Joomla等等)为各平台进行性能优化了

  不过 除了文件复制操作之外 ASP NET在性能方面全面领先于PHP(无论部署在Linux还是Windows上面)

  Linux上访问MySQL的性能稍稍优于Windows上访问SQL Server的性能(使用普通的数据类型和SELECT语句) 但是这里的差距几乎可以忽略不计

  ASP NET(C#)操作 如对象使用 类库调用等等 其性能都远高于PHP 对于这个测试结果 Joe补充道

  我知道我的一些PHP朋友和Linux伙计们要跳出来驳斥我的测试和结果了

  我一直在思考 这样的性能比较是否需要加入一些高级的优化选项 不过 NET方面也有例如多线程 异步请求 和各种缓存方式可以使用

  请注意——我并没有说 ASP NET更快 所以你不应该使用PHP! 我使用认为 PHP过于简单导致对某些高级应用来说有些举步维艰 就像ASP NET在项目早期会有学习方面的复杂性

  对我来说 PHP最令人兴奋的地方不是它的语言/平台 而是成千上万聪明的PHP开发人员 以及各种优秀的项目(如Drupal Joomla WordPress PHPBB Nuke等等)

  可以这么认为 PHP在Windows和Linux上的性能处于同一个水平上 我现在终于可以为Windows编写那些我盼望着许多年的PHP类库了

  Joe还公开了测试代码 他表示 如果你对这个测试的结果有疑义 可以亲自进行这个实验 或是编写你自己的测试代码进行试验

  文章发布之后 许多网友对这一测试结果发表了看法 Joe基本上逐一回复了其中的主要观点

   我使用ASP NET只是因为我喜欢Visual Studio IDE ——我个人认为Visual Studio是最有生产力的开发工具 但是 PHP的有不错的选择 我使用Zend Studio PHPEd Komodo Delphi for PHP 这些都很不错 我讨厌Eclipse 不过Zend也在这方面为PHP开发做了不少扩展

  应该比较ASP的性能——不用了 谢谢 旧式的ASP与目前的PHP与ASP NET差距太大了 做这种比较 似乎是在建议使用ASP开发新项目 我强烈不建议你这么做

   位与 位系统对比

   位与 位系统之间的比较——这些测试的目的并不是为了体现 位系统上的性能差距 今后的测试我会增加 位的场景

   PHP丑陋至极 ——哦 我不同意 旧式ASP要丑陋多了 你可以写出非常可怕而丑陋的PHP代码 也可以写出丑陋而可怕的C#或VB代码 同样 你也可以写出优雅的C++样式的PHP 这完全只和开发人员的技能有关

  应该使用Windows上的Apache进行测试——Apache是Linux上的服务器 不过我认为如果你在Windows上不使用IIS 则会损失太多太多东西了

   有办法在Win K 中 在不损失安全性的前提下加快文件复制性能吗? ——似乎不行 我认为这涉及到Windows服务器上的ACL系统 我以后可能会测试通过数据流读取文件的性能 有些东西的性能可能会有所改善 不过 Web应用程序一般不会编程来复制大量文件

   PHP一直是 也永远只是一个半专业性质的环境 ——这种说法狗屁不通 PHP平台上有许多专业的 高质量的应用程序 也有很多我非常尊敬的开发人员 是否专业是开发人员的问题 不是PHP或ASP NET的问题

   我认为比较没有opcode缓存的PHP很不公平 NET是编译执行的 而PHP需要每次都解释并 编译 页面 ——我同意这个测试可能不够完整 但是我不认同这个逻辑 我测试PHP的方式 就和下载安装的方式一样 我的虚拟主机也没有安装op code缓存 而事实上 ASP NET自带这个特性也并不意味着测试是不公平的 这是因为PHP缺少这个特性——不过这个要求很合理 我正在准备新的测试

   说PHP不是一个 专业的 语言很没道理 因为几乎所有最大的站点都是用PHP构建的 ——这种说法是没道理 不过说那些站点 几乎都是 用PHP构建的也是错误的 有些是 有些不是

  如果你们看到这一数据之后对ASP NET信心倍增我自然很高兴 如果我不认为 NET是开发Web应用程序来说是一种更好的选择——至少不属于其它平台 那么我也不会在微软工作了

  但是……如果你因为这些数据而忽视PHP 也是错误且幼稚的行为

  从纯技术角度来说 我认为 NET远比PHP强大 但这并不意味着PHP不够强大 在我看来 PHP的力量体现在众多的应用程序以及可用的框架

  大约一周以后 Joe公开了第二次测试的结果 与前一个测试相比 第二个测试主要有以下两个改变

  为Linux和Windows上安装了op code缓存 并重新运行了大部分测试

  由于一些依赖项的问题 PHP + APC的测试平台变成了Debain 操作系统

  对于第二次测试及其结果 Joe解释到

  从结果上看 Ubuntu和Debian上运行PHP的性能差距可以忽略不计 部分条目的性能有些细小的改进 有些则有 %的提高 但是总体来说其效果比我想象中要来得低

  使用APC之后 一些条目的运行反而变慢了 不过我认为这只是机器所造成的误差 请注意 表格中显示的不是第一次的结果 都是经过两次刷新 确认是在缓存命中时得到的结果

  我认为现在的测试非常公平

  空的循环测试和空的函数执行非常重要 因为这反映了语言或平台的基础消耗 这是处页面传输等性能开销外的性能消耗 是一个重要的考虑方面

  我的一些PHP朋友也认可这个测试的准确性 不过给出了非常有见解的补充

  ASP NET在性能上的领先不会对我有什么影响 PHP是我的最爱 我的应用程序已经足够快了 没错 ASP NET在基础性能上是比较快 但是我的应用程序可以通过优秀的页面实现和JavaScript实践把这部分性能补回来

  此外 根据上一次实验的结果 在Windows平台上运行PHP时 在MySQL和文件的访问上有一些性能问题 微软许多团队都向我获取了相关信息 希望这些数据都够转变为切实的改进

  Joe表示 他将收集大家认为更公平 更有意义的测试场景 以下是他所计划的测试项目

  ◆实际页面测试 循环 寒暑调用和对象操作是一类测试 不过页面的整体呈现则是另一种有意义的测试

  ◆负载测试 哪一个环境可以同时处理更大量的请求

  ◆在负载测试中 哪一方的性能会下降地更快

  ◆在各种情况下 位平台的表现如何

lishixinzhi/Article/program/net/201311/11969

相似回答