腾讯分分彩独胆二期
智軟工作室主要是為寧波公司提供寧波網站建設,寧波網站制作,寧波做網站公司,寧波外貿網站建設公司,寧波網站優化等項目,以優質的服務,優惠的價格,深的客戶信賴。相信有你的加入我們的明天會更有動力!期待與你合作!
  • 寧波智軟設計工作室,打造寧波網站制作工作室頂級品牌
  • 智軟擁有專業的設計團隊
  • 多年網站建設團隊為你服務
  • 智軟期待與你合作
  • 我們的技能
  • 我們掌握的技能有: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
郵箱:[email protected]
期待你來電咨詢
回頂部
Copyright 2010 智軟工作室 版權所有    智軟為寧波公司提供最優惠的網絡服務【寧波網站建設,寧波網站制作公司,寧波做網站公司,寧波外貿網站建設公司】我們竭誠為你服務!
腾讯分分彩独胆二期