智软工作室 主要是为宁波公司提供宁波网站建设  ,宁波网站制作    ,宁波做网站公司, 宁波外贸网站建设公司,宁波网站优化  等项目,以优质的服务,优 惠的价格,深的客户信赖。相信有你的加入我们的明天会更有动力!期待与你合作!
  • 宁波智软设计工作
室,打造宁波网站制作



工作室顶级品牌
  • 智软拥有专业的设
计团队
  • 多年网站建设团队
为你服务
  • 智软期待与你合作
  • 我们的技能
  • 我们掌握的技能有
:dreamweaver,flash,photoshop
  • 宁波高端网站建设
服务公司
    2014已经悄然到来,在 新的一年我们恭贺所有客户事业蒸蒸日上,同事庆祝智软设计工作室成立5周年,在5周年为众多客户提 供了保质量的网站设计与网站制作。 我们在新的一年质 量与服务将会更加进一步为更多的客户带来高端的网站设计与服务!期待与你合作
  • 企业网站制作建设
原因与服务介绍

    智软设计工作室多 年为宁波企业网站制作建设服务一直以来我们以最优惠价格,最优质的质量,最突出的设计!得到了客户的一致认可,我们的服务包括: 宁波网站设计,宁波网站建设  ,宁波网站制作    ,宁波网站优化  ,宁波英文网站制作 我们会以优质的服务,最低的价格来报答 客户!

  • 点击链接网站优化
推广介绍

    点击连接网站优化 推广-对企业的网站优化 和网站推广--对企业的重要性 -点击进行详细了解

  • 2014开幕,宁波网站设
计服务全面优惠.

    2014开幕,宁波智软设 计为宁波企业提供更加优秀的设计和实惠的价格

  • 链接到网站案例展
示平台
    智软设计工作为宁 波客户网站设计案例展示平台-案例均为定期更新 ,让新老客户更好的看到我们做的案例,点击查看我们做的网站案例吧!
  • 我们宁波网络公司

提供网站一站式解决方案
    智软(宁波网络公司 )帮你轻松解决网络 问题,网站一站式解决方案
你当前的位置: > 营销与网络  >

网站制作语言    PHP、net性能大比拼   

2010-02-10 16:37

单纯通过对比两种 开发工具,是没有任何意义的。因为二者在自己的开发领域各有所长,就好像Java对比.NET,各有优势。本文 主要的目的是通过比较ASP.NET与PHP,让大家更清楚的 看到二者的区别,以便于大家选好适合自己的开发工具。



  我日常工作使 用的是ASP.NET,前一段想学习了 解一下其他的网络应用开发技术,本可以选择热门的Ruby on Rails或者Python,但是无奈精力有 限,想都学是不可能的,而我的博客建在WordPress上,WordPress是用PHP写的,所以还是选 择多花些时间了解PHP。

  PHP和ASP.NET最大最本质的区别 ,就是PHP只是一门编程语言 ,而ASP.NET是一个平台。

  这世界上大约 1/3的网站的应用程序 是用PHP写的,这些 PHP程序又大部分运行 在Apache上,作为一门语言 ,PHP并不是必须运行在 Apache上,PHP是独立于运行平台 的,它也可以在IIS里运行。与 PHP相反,ASP.NET是一个平台而不是 语言,ASP.NET的程序可以用 C#写,也可以用 VB.NET写,可以用任何能 够编译成在.NET CLR上运行的的编程语 言来写,ASP.NET通常运行在 Windows+IIS上,但是也可以运 行在其他Web Server比如Apache上。

  从这个意义上 说,PHP和ASP.NET的区别,就好比是 iPhone和Windows 7的区别,不是一样 的东西,但是你选择了其中一个,就等于选择一种风格。

  但是作为开发 网络应用的工具,就我的体会,在功能上还有两个显著区别。

  Share-Nothing Architecture

  PHP的哲学是Share-Nothing Architecture,每次对HTTP请求的处理都是独 立的,不共享任何数据,如果真的需要共享的话,那也是通过文件系统或者数据库,在PHP的运行空间中不会 共享内存对象。这篇关于Share-Nothing Architecture的文章非常详细地 介绍了Share-Nothing Architecture,这种架构能够带 来更好的扩展性(Scalability)和可维护性 (Maintainablity)。

  使用ASP.NET一样可以实现 Share-Nothing Architecture,问题是, ASP.NET一族的编程语言特 性让打破Share-Nothing Architecture太容易了。比如, C#语言中的static变量,如果使用的 话,同一AppDomain的每个HTTP请求都Share同一数据,这样就 不是Share-Nothing了。

  Asynchronous Programming Model

  ASP.NET有一个功能是 PHP不具有的, Asynchronous Programming Model(APM),异步编程模型, 这一模型可以更有效地利用线程,提高Scalaibility,当然,写异步的 程序要比写同步的程序困难得多。

  PHP没有ASP.NET一样的Asynchronous Programming Model,为什么在这一方 面PHP世界居然逊于微软 技术呢?

  我看可从两方 面回答,第一,微软支持APM是因为它能够支持 ,第二,是因为微软必须支持。

  为了支持 APM,必须要有底层支 持,ASP.NET作为一个平台,可 以利用微软的IO Completion Port来实现真正的异步 。但是像PHP这样的编程语言, 只是编程语言,不能够假设自己运行在一个支持异步端口的平台上,所以决定语言不会添加APM功能。

  为什么又说微 软必须支持APM呢?Windows上进程的代价很大 ,线程的代价好一点,但是依然很大,所以要有效地使用线程,就必须创造出APM这样的东西。相比 之下,Linux上进程线程的代价 要小得多,这样创造APM的压力也就小得多 ,不用APM一样可以保持高效 。

  Trends

  这篇文章标题 是”PHP vs ASP.NET”,我们用Google Trends来看看二者的比较 。看短期对PHP和ASP.NET的关注程度,有意 思,每到周末,对这两个关键词的搜索就少,可见PHP和ASP.NET的使用者大都是周 一到周五工作的上班族。

  我们看长期比 较,对PHP的搜索呈下降趋势 ,怎么会这样呢?我想不明白, PHP依然是这世界上应 用最广的网络编程语言,最近Facebook的开发者发布了 HipHop,将大大提高 PHP应用的性能,也许 运行速度可以比ASP.NET还要快。
 

 

写新闻其实挺不爽 的,因为不能夹杂个人的看法,只能平铺直叙陈述事实。当然,如果像某些新闻那样“换一种说法 ”是可以骗过一些 “不明真相的群众 ”,但是这就有违道 德了。因此,在客观陈述完新闻内容之后,我只能选择把自己的感想、评论等内容放在自己的博客上。

 

  Joe Stagner的背景挺特殊,它 是PHP的老用户,在 ASP.NET出现之前就是 PHP的重量级开发人员 了。后来不知哪一天开始他加入了微软,我们就可以在一些如介绍ASP.NET AJAX的文章、视频中看 到他。这次他又涉及了一个敏感话题:性能比较。要知道每次这种比较都会惹来一阵争论……我不想用“口水战”来形容,我认为它 和“争论”的性质不同。 Joe也承认,每次他说 PHP好话就会被微软的 同事指责,而说.NET好话就要被 PHP阵营说是微软的托 。

  我深信优秀的 技术人员都是有信仰的,都有技术倾向性。因此如Joe夹在中间的人的确 比较尴尬。但是我认为,有信仰,和“客观”是不冲突的。信仰 涉及到倾向性,而客观则意味着有倾向性之后的办事方式。

  至于比较结果 ,您可以关注一下新闻内容,总体来说,ASP.NET从纯粹的执行效率 上来说是大幅领先于PHP的。这并不令人惊 讶,一个是编译为机器码的执行方式,一个是解析执行(即时缓存了 op-code也并不是机器码 ),性能自然天差地 远。

  Joe也知道会引发争论 ,因此他在文章后面写道:

  我知道某些人 会被这个测试结果激怒,欢迎发表评论及反对意见,但是如果你无法保持礼貌的话,我会删除你的评论并阻止你的IP。

  如果你不喜欢 ,并拒绝接受这个结果——那么你也来测试一 下。用数据支持你的观点,使用我的代码或你自己的,然后围绕事实再来争论

  自然, Joe也给出了测试代码 及测试环境的描述。

  文章的评论自 然是很有看头的,说法很多,有许多人说VS的IDE好,有人说 PHP永远只能写出半专 业的程序。Joe一一进行了回应, 我个人认为回应的还是很客观的,紧紧围绕在测试的中心。他表示,虽然VS非常优秀,但是 PHP也有很好的 IDE。而能否写出专业 的程序是看人,而不是由PHP决定的,有丑陋的 PHP程序,也能写出如 C++一般工整美观的代 码。

  从表面上看, ASP.NET在性能上胜出 PHP一大截,作为 ASP.NET的忠实用户我应该 非常乐意接受这个“结果”。但是,我并不关 注这个,因为这种运行时上纯粹的速度对于一个Web应用程序来说实在 微不足道。例如Joe的第三篇文章里列 举出的PHP高手的应对方式:

  ASP.NET在性能上的领先不 会对我有什么影响。PHP是我的最爱,我的 应用程序已经足够快了。

  没错, ASP.NET在基础性能上是比 较快,但是我的应用程序可以通过优秀的页面实现和JavaScript实践把这部分性能 补回来。

  我在进行 Drupal开发,我对 PHP最熟悉,因此我宁 愿多花一些硬件来保持更好的开发效率。

  在WEB上便捷的开发,与 各种系统之间灵活的搭配,像胶水一样将各种不同的物件拼装起来呈现给Web,(python在这方面也做得非 常棒)。这才是PHP能有今天的本质原 因。

  之前我批评 Java是一种不思进取的 低生产力语言,回应很多。其中也有类似的说法,如说Java平台上开源多,项 目多等等。没错,这我在对Java语言发起非难之前 就已经反复强调了。我同意这个观点——但是,如果是这样 的“结论”肯定是站不住脚的 :“因为Java平台开源多,项目 多,因此Java语言并不是不思进 取的语言”。这就好比有人说 “他熟悉PHP,PHP的项目多,因此 PHP的性能比ASP.NET快”一样,把两种东西 混淆起来了。

  奇怪的是, Joe没有让人不要用 PHP,我也没有让人不 要用 Java平台(不过我现在一直建 议别人用Scala代替Java语言)。

  许多国内技术 人员总有这样的“毛病”,见不得自己使用 东西有一点点“瑕疵”。既然我是 Java平台开发人员,我 使用Java语言,我就见不得 别人说Java语言一丁点不好。 其实做技术就是做权衡,“没有银弹”就意味着没有技术 是完美无缺的,我们选择技术是在优势和劣势之间进行平衡后的结果。只有承认了缺点,认识到缺点,才能吸取其他技术的长处,来作出更好的权衡。

  因此我一直认 可的是,SQL Server的确贵,数据存储 就用*nix平台上的吧。选择 多,性能多。

  当然,这不是 国内技术人员的毛病,这是一个广泛的问题。很巧,李笑来老师昨天写了一篇博文,似乎刚好谈论了这方面的问题。文章很短,就全文摘录了:

  无论是谁,一 生中总是在不停地“选择”(姑且不论所谓选择 之中有多少是真实的有多少是幻象而已)。每个人都在尽量 在众多选项中选择“最好”的那个。一生有 2n选择,可最终只有 一条路属于自己。

  走在自己正在 走的那条路上,人们对其它可能性可以抱有两种态度:“好奇”——通常因对现状不满 而表现为“后悔”;或者“自负”——更多人最终选择的 是这个,因为另外一个选择所表现出来的“后悔”通常被认为是负面 情绪,而与之相反的“无怨无悔”好像更加理直气壮 更加毅然决然(尽管并不总是正确 )。

  时间长了,人 们就不知不觉把“我一直在尽量选最 好的”和“我选的就是好的 ”等同起来,进而外 演为“与我选的不一样的 选择就是不好的”,再进一步演化为 “既然选的是 ‘不好’的,那他要么是笨 ,要么是‘坏’,反正跟我不一样 !”

  根源就在这里 了。以自我为中心也好,过度自恋也好,沙文主义、大男子主义、狭隘民族主义也罢,都大抵上如此。

  还有一个问题 ,之前也多次谈过,国内技术人员太容易轻视一个问题。例如在这篇新闻中不止一个用户觉得这个测试很无聊。为什么“无聊”?可能是觉得 “这点性能不是关键 ”因此这个实验没有 意义吧。我想说,其实最无聊的不是做实验的人,而是纠结与实验结果的人。或者说,无聊的不是实验,而是纠结于实验结果。与此相比,我反而强烈怀疑,轻易认为这个实验无聊的人,倒是真正只关注与“谁快谁慢”,而不关注过程和 结果所表达出的内容。不去推测,不去思考。那么以后到了需要决策的时候,决策所需的依据从哪里来呢?应该都已经被 “无聊”走了吧。

  Joe的这几篇文章,以 及我总结的时候,都刻意的详细列出了测试的过程和“运行性能”以外的结果。除了 保持公正,客观之外,因为它们也是重要的数据。例如,我现在知道了在Windows上访问MySQL的驱动程序实现很 差,而不同平台上访问PostgreSQL性能则相差无几。 我知道,在Windows上进行大文件复制 ,受ACL影响性能较差。而 如果关注Windows上运行PHP情况的朋友们则可 以获得更多信息。

  我不知道是不 是国内技术人员的普遍水平较高,总是容易感觉国外的一些讨论无聊。例如有人讨论Java的原生类型时有人 回复“是不是经济危机老 美太闲了”。而上次有人和别 人讨论ppt的缩写是怎么来的 ,就给软件最初的编写者写了一封英文信求证,老外非常详细解答了这个问题,还纠正了简称和缩写的差异。作者把信贴出来写了篇blog,原站上评论都是 赞同。

  我不知道这算 是学术态度的问题,还是只能说“对工作没有热情, 对生活没有好奇”?在《原生类型》那 片文章里,有朋友回复的好:

  西方人这种看 似无聊的争论才让他们达到了今天的高度,争论是不是一切量都可以用有理数表示,争论什么是运动,争论地球是宇宙的中心还是太阳是宇宙的中心,争论撒旦是如何诞生的,争论行星是如何运行。而我们很只注重实用,所以无 法达到西方在理论上的高度,永远只能等别人争论完了,出结果了。我们拿来用用,仅此而已。

  不过,嫌外国 人无聊的人,往往也是嫌国内没有技术含量的人。是不是很奇怪?

  同样, Erlang之父Joe Armstrong写Why OO Sucks;Stephan Schmidt写Clojure vs Scala(上,下),Java平台语言Groovy创始人James Strachan认为Scala是Java未来的替代品,他 和JRuby的核心维护者 James Gosling、Charles Nutter对Scala vs. Java的话题讨论的不亦 乐乎。这些都是在批评一个事物,或是在进行“语言比较”这一“无聊”的话题。那么他们 是不是也都闲得慌了?

  我在想,如果 把他们的文章翻译过来,匿个名,或者让吉日嘎拉这样的“众矢之的”来发表,会不会被 人指责不懂OO,不懂Java?您别说,我还真见 过这样的事情,谁让国内翻译转载常常不留出处呢?

  其实这又是个 逻辑问题了,这近似于《常见逻辑谬误》一文提到“人身攻击及 ‘你也一样’”,也就是指并不关 心问题本身,而是把论据转移到“对方”身上。其实,一个 命题是否正确,和它是由哪个人提出的有联系吗?我们一直指责某些 人“屁股决定脑袋 ”,可别人真的用脑 袋说话了,我们每次还是盯着别人的屁股看。

  如果用博客园 里常见的现象就是,如果一个人在说比较微软技术和其他技术,而“恰好”那人又在说微软好 话,又“恰好”那人是MVP。那么好,肯定会 出现许多人说MVP是微软的托。我承 认,有些MVP因为个人利益而会 作微软的托。例如您现在在Google上搜索“MVP TFS”的第一条便是一则 不光彩的事件。Ben Scheirman在一个TFS的MVP博客里回复说 “即使有钱,也会用 免费工具,因为更好用”,结果这条回复被 删除了。对方私下写信说,这是因为他在用TFS咨询赚钱。

  这不正说明 MVP是托吗?不过这显然是 MVP的个人行为,而不 是MVP的群体做法。原因 很简单,因为Ben自己也是个 MVP,所以现在是 “一个MVP说微软产品不好, 其回复被另一个MVP删除了”。那么您说, MVP是否是微软的托 ?还有,您说我是不 是微软的托?

  同样道理, Oracle认证工程师说 Oracle好,Rails爱好者说Rails好,是不是都是托 呢?开源爱好者是不是 开源的托?我还是认为,优秀 的技术人员一定是有信仰的,也是有倾向性的。但是,他们的说得东西本身是否正确,并不以他们的倾向性而转移,那些东西的正确性是客观确定的。

  我认为,如果 社区要蓬勃发展,就要接受这种倾向性,并尽力保持客观的头脑,经常“换一种方式想问题 ”。我们要的不是和 谐,而是争论,对客观事物的争论,而不是对个人的人身攻击。我认为,这方面我们做的还很不够,要继续努力。

 

小戴个人理论:我 个人网站制作比较喜欢PHP,因为觉得 PHP比较灵活,反正就 是支持PHP了。不过net会的人应该也很不 错了!

更多

【责任编辑:小戴工程师 】

关键字: 性能大比拼     网站制作语言     net php

上一篇:css属性缩写技巧 -网站制作者不可少 下一篇:判断网站是否被黑 客入侵和解决办法

最新文章

2010-02-10 16:37

相关文章

2010-02-10 16:37
网站制作咨询:
QQ:277728291
电话:18668277799
邮箱:277728291@qq.com
期待你来电咨询
回顶部
Copyright 2010 智软工作室 版权所有    智软为宁波公司提供最优惠的网络服务【宁波网站建设  ,宁波网站制作    公司,宁波做网站公司,宁波外贸网站建设公司】我们竭诚为你服务!
友情链接:    时时彩网投平台网址_*官方推荐*_[大地 22022]   天地汇棋牌娱乐   pk10回血上岸经验   pk10回血上岸经验   博凯彩票---首页欢迎你