Re: [請益] PHP和其他程式的執行速度比較
※ 引述《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
推
12/17 14:18, , 1F
12/17 14:18, 1F
→
12/17 14:19, , 2F
12/17 14:19, 2F
→
12/17 14:20, , 3F
12/17 14:20, 3F
推
12/17 14:44, , 4F
12/17 14:44, 4F
→
12/17 14:45, , 5F
12/17 14:45, 5F
→
12/17 14:47, , 6F
12/17 14:47, 6F
→
12/17 15:37, , 7F
12/17 15:37, 7F
推
12/17 15:50, , 8F
12/17 15:50, 8F
推
12/17 16:25, , 9F
12/17 16:25, 9F
→
12/17 16:48, , 10F
12/17 16:48, 10F
→
12/17 16:49, , 11F
12/17 16:49, 11F
→
12/17 16:49, , 12F
12/17 16:49, 12F
→
12/17 16:51, , 13F
12/17 16:51, 13F
→
12/17 16:57, , 14F
12/17 16:57, 14F
→
12/17 16:57, , 15F
12/17 16:57, 15F
→
12/17 16:58, , 16F
12/17 16:58, 16F
→
12/17 17:12, , 17F
12/17 17:12, 17F
→
12/17 17:12, , 18F
12/17 17:12, 18F
→
12/17 18:19, , 19F
12/17 18:19, 19F
→
12/17 18:20, , 20F
12/17 18:20, 20F
→
12/17 20:14, , 21F
12/17 20:14, 21F
→
12/17 20:30, , 22F
12/17 20:30, 22F
→
12/17 20:30, , 23F
12/17 20:30, 23F
→
12/17 21:28, , 24F
12/17 21:28, 24F
→
12/17 21:30, , 25F
12/17 21:30, 25F
推
12/17 22:07, , 26F
12/17 22:07, 26F
推
12/17 22:32, , 27F
12/17 22:32, 27F
→
12/18 01:44, , 28F
12/18 01:44, 28F
→
12/18 09:21, , 29F
12/18 09:21, 29F
→
12/18 09:21, , 30F
12/18 09:21, 30F
→
12/18 09:22, , 31F
12/18 09:22, 31F
→
12/18 13:18, , 32F
12/18 13:18, 32F
→
12/18 13:19, , 33F
12/18 13:19, 33F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章