顯示廣告
隱藏 ✕
Disp BBS guest 註冊 登入(i) 線上人數: 98
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2013-12-28 01:15:17
看板 PHP
作者 F23ko ( http://f23ko.com )
標題 Re: [請益] PHP和其他程式的執行速度比較
時間 Tue Dec 17 13:57:30 2013


※ 引述《sunlights (sunlights)》之銘言:
:   最近無聊在104上搜尋了一下..
:   發現.NET的工作很多..
:   可是我N年前就己經有看到aspx(.NET)的網站..
:   但那時.NET和JSP一樣比較少人用..
:   而且網路上看到一篇文章
:   http://0rz.tw/zfFtS
全球最受欢迎的网站使用的哪些编程语言? - 开源中国社区
维基百科有个网页,整理了全球排名靠前的那些大站点所用的编程语言,下表是前十几名的名单: 网页地址:  ...
 
:   幾乎大部份受歡迎的網站後端都有用到PHP 和 JAVA
:   只有三個網站在用.NET
:   為什麼現在異軍突起在104上比PHP還要受歡迎呢??
:   .net職缺(1569) php職缺(850)
:   而且還在http://bbs.csdn.net/topics/390052491 上
:   看見有人寫.net 比 php 快70倍..
:   真的嗎??

看見這篇文想回一下....

原始發表於:
http://f23ko.com/728

因為自己用過幾種程式語言
所以把用過的感想整理一下
分析各種語言的優缺點

有些人可能會感到困惑:我到底該學哪種語言?

我的回答是..... 你應該看你的用途、去決定使用哪種語言


JAVA、JSP、J2EE
優點:
  1.高效能:
    主要是因為JVM會動態的把JAVA虛擬碼編譯成C的關係
    以及會依照運行狀態去調整他運行的方式
    甚至把人寫的爛CODE去改寫成比較好的寫法之類的
    不會比C慢太多

  2.有application
    他有伺服器運行物件,當伺服器開始運行時,只會建立一個實體
    然後用那個實體去處理不同Request的請求
    舉例來說,如果要記錄,伺服器同時間有多少人上線
    那用application就可以記錄了,這會把資料存在記憶體
    如果是PHP就絕對要讀檔或是寫資料庫

  3.執行緒
    同上一點
    JAVA允許開執行緒出來


缺點:
  1.設定難搞、難學
    基礎語言不難,很多人宣稱七天、兩週就學起來的

    但是學完基礎的語言之後,如果想去寫個東西
    例如Android或是J2EE
    甚至在還沒開始寫網頁之前,設定Tomcat時
    就會發現,要設定一堆的東西才能讓伺服器動起來
    每加一個servlet就得在xml中加上他的對應網址、類別名稱

    複雜的設定已經是是JAVA的傳統
    寫其他的語言可能不用那麼「笨重」的IDE
    但是寫JAVA不靠IDE去產生CODE跟設定檔,會寫的很想死
    (看過andriod的設定檔嗎?那根本不是人能寫的)

    以及,JAVA上的工具很多
    對中、大團隊而言,這些工具很有用
    也可以很出很龐大、而且效能很高的程式
    像掏寶就是J2EE+MySQL去寫的

    基於這一點,學JAVA要上手很花時間
    必須要學一堆常用的工具才能成為比較專業的JAVA程式設計師
    而且學成之後你會發現..... 你變成團隊中的一顆小齒輪
    單打獨鬥對自己來說很不利

    但台灣的軟體界傳統是獨立作業
    兩三個人甚至一個人就幹掉整個專案
    所以,那些工具就變的可有可無.....

  2.system call的代價很大
    主要還是因為JAVA的跨平台精神的關係
    JAVA為了跨平台,跟系統隔著一層JVM

    雖然也有Runtime.exec()之類的東西
    但根據我之前看到過的書的建議
    他是說在Runtime.exec()的時候會建立一個新的JVM
        再用那個VM去執行system call,這樣速度很慢、負荷很大
    所以建議SERVER上要用JAVA寫出同樣功能的程式
    然後在內部去使用

    簡單來講,JAVA就讓他關在JVM裡面,自己玩自己的就好
    他跟其他語言的連結沒這麼好

  3.程式語言繁瑣
    我不知道該怎麼說這個東西
    JAVA的用途很廣、可用的libary也很多
    但是當你要使用一個功能的時候,就會發現....
    用起來很累.... (跟其他語言比起來)


語言近況:
   最近的JAVA非常努力的想把自己變成functional語言
   JAVA8準備放入 lambda (原本是說JAVA7要加這個,但是個芭樂)

適合的用途:
   大型網站之類的



NET
   簡而言之:學JAVA的
   運作起來很像,邏輯也很像,也能也不會差到哪裡去
   在語言上,C#比JAVA寫起來還舒服一些
   一些奇奇怪怪的功能都有
   有點像是把C++加上JAVA,取優點做混合
   而且還可以用VB等老一輩的語言去寫
   上一輩的程式設計師可以不用學新的語言就可以直接上手

跟JAVA比起來的額外優點:
  1.工具很好用
    因為都是微軟的東西
    只要都用微軟的工具就可以很方便的處理掉一堆很花力氣的事情
    前提是都用微軟

  2.全方位的整合
    從嵌入式(windows xp embedded)
    伺服器的asp.net
    用來跟flash鬥的silverlight
    Microsoft Servers 系列(資料庫的MSSQL、伺服器網站的IIS、MAIL SERVER)
    都他想辦法弄在一起了

跟JAVA比起來的額外缺點:
  1.如果用.NET
    那麼,系統、資料庫最好都用微軟的東西
    這樣效能才會好,而且問題才會少

    這會綁死在微軟上
    接著就是錢錢錢的問題了
    因為微軟的開發工具要錢、OS要錢、資料庫要錢,很多東西都要錢
    我記得整套買下來要十幾二十萬跑不掉
    這對公司來說不是太大的問題就是了

  2.這缺點是針對程式設計師而言
    對公司來說可能是優點

    .NET很容容易上手
    即使是資訊系剛畢業的人
    也都能很快的上手.NET
    所以.NET的程式設計師的取代性很高

語言近況:
   C#改版改的還蠻快的
   我最後接觸C#是兩三年前的事情
   現在版號都快超過JAVA了
   也多出一堆東西出來

   雖然跟網頁無關但來提一下
   .NET 非常努力的想把觸手伸到平板、智慧手機上
   但是因為ARM跟桌機不一樣,所以冒出個Windows RT出來
   然後號稱可以用javascript、html5去開發windows作業系統程式
   伺服器部分
   之前參加過的發表會一直在講 windows Azure
   我不知道微軟還會不會推SERVER
   或是打算整個移到雲端...

適合的用途:
   中型網站、公司的網站、政府機關(主要還是因為政府機關都用微軟)
   如果網站變大的話,考慮到費用問題
   大多數的公司都會往J2EE走



PHP
   PHP的定位跟上面兩個不一樣
   拿PHP來跟J2EE跟.NET比根本是一件很奇怪的事情
   比的居然還是效能,根本是自討苦吃.....

優點:
   1.上手容易
   PHP在學習上並不困難,而且沒太多設定檔要弄就可以跑
   (我是指xampp之類的)
   安裝完xampp就可以馬上打開htdoc資料夾,開始教別人寫php

   2.資源多
   我想不少人都可以唸出五款以上架站套件
   PHP的資源真的很多
   有不少狀況是可以不寫一行程式碼就寫出一個網站的
   或是,抓個開放原始碼套件改一改就能交差

   3.靜態平行處理強
   PHP專門設計來處理這種東西


缺點:
   1.慢
   就是慢
   如果打算讓PHP執行費時的東西
   應該要把工作丟給C去做,然後讓PHP去呼叫C
   PHP本身並不適合做這種事情

   這影含的意思是.....
   如果你希望用PHP去寫一些很誇張的東西的話
   你必須去學C這個大魔王
   或是去做system call

   2.髒
   如果沒引入MVC之類的框架
   PHP的CODE可以長的很可怕
   PHP沒有先天的MVC
   因為在PHP發展的年代根本沒MVC的概念

   然後一些奇奇怪怪的寫法也可能會出現安全漏洞
   雖然那些漏洞不是PHP的錯
   但是PHP的特性是,同樣的東西可以用很多種寫法
   沒有太嚴格的規定或規範
   所以....
   新手在PHP上搞出洞來是很常見的事情

   3.對即時平行處理的能力弱
   我是指websocket之類的
   PHP可以做到,但並不適合處理這種東西
   如果打算做個即時互動的網頁遊戲
   PHP拿來當作登入頁面、戰績顯示頁面就好
   遊戲SERVER端部分請考慮使用別的語言



適合的用途:
   小網站
   廉價、快速開發的網站

語言近況:
   最近的PHP非常努力的把自己變成物件導向的語言



其他像是
Nodejs、Roby on Rails
析望有用過的人也來分析一下 ^^"


--

                                寫做F23,讀做純潔。
                        二三往事  http://f23ko.com/?ptt

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.18.75
PsMonkey:@_@ 這裡講的 Java...... 好詭異... 我果然還是太弱了...1F 12/17 14:18
PsMonkey:不過,不提 servlet 而是拿比較對等的 JSP,那其實跟 PHP
PsMonkey:一樣可以馬上開始寫。拿 J2EE 其他東西來說不太對等
liaosankai:PHP要提高效能,的確要去寫C才行,不過近來有出現幫助4F 12/17 14:44
liaosankai:寫C的Zephir可能比較不痛了,不過還是得有C的基礎才行
liaosankai:php的freamwork,phalcon2.0打算字Zephir重刻(期待XD)
gname:我也覺得要拿jsp才對,用java是輾過去吧...XD7F 12/17 15:37
lairrol:我也覺得Java那一塊要用JSP去講比較好8F 12/17 15:50
olctw:PHP 就等 HHVM 成熟了, JAVA 設定繁瑣+1 ...9F 12/17 16:25
danny8376:說實話 你拿JSP比... 務實上有多少東西是單個JSP呢...10F 12/17 16:48
danny8376:PHP整體來說 他就是CGI年代的產物 所以PHP大多時候就是
danny8376:整個CGI的模式
danny8376:不過JAVA確實可以單個JSP寫www
MOONRAKER:現在還有很多legacy的JSP code不是嗎 沒有framework14F 12/17 16:57
MOONRAKER:愛怎麼寫就怎麼寫 跟老的ASP code一樣恐怖
MOONRAKER:又我有個問題 靜態或動態平行處理怎麼分別 @@
dlikeayu:沒講到Python,把Java C#想優化的部份都優化好了17F 12/17 17:12
dlikeayu:Depolyment也比Java簡單,目前唯一問題就是lib還不夠多
erotic:Java高效率? 有沒有搞錯,用過SAP ERP、IBM Tivoli產品,全都19F 12/17 18:19
erotic:是用Java,遇到要查詢或reload的情況,就覺得好慢...
F23ko:應該是DAO包太多層了吧?JAVA直接下JDBC也很快的21F 12/17 20:14
erotic:而且點選畫面上任何一個功能,反應有點慢,特別是Tivoli監控22F 12/17 20:30
erotic:軟體(Web介面),執行幾個小時後,整個電腦的效能都被拖慢...
danny8376:那樓上要不要想想拿PHP來寫會變啥狀況?24F 12/17 21:28
danny8376:效率這東西是相對的 不是絕對的 懂嗎?
LaPass:Web介面會慢我總覺得是瀏覽器的memory leak26F 12/17 22:07
PsMonkey:如果還是純 page base 的 web 那就  [遠目]27F 12/17 22:32
KC73:Facebook: 嗚!人家沒有小又廉價啦~28F 12/18 01:44
rickysu:PHP的第三點缺點剛好是小弟在今年PHPConf上的講題。29F 12/18 09:21
rickysu:用PHP也是可以寫WebSocket,效能也可以打趴一堆語言的。
rickysu:http://goo.gl/24tTqW  (這算是打臉文嗎 XD
danny8376:樓上 那不是標準PHP的玩法啦www32F 12/18 13:18
danny8376:目前把PHP寫成常駐的還不多XDD 大多都還只是拿來玩而已

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 415 
※ 本文也出現在看板: dinos
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇