作者F23ko ( http://f23ko.com )
看板PHP
标题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
1F:推 PsMonkey:@_@ 这里讲的 Java...... 好诡异... 我果然还是太弱了... 12/17 14:18
2F:→ PsMonkey:不过,不提 servlet 而是拿比较对等的 JSP,那其实跟 PHP 12/17 14:19
3F:→ PsMonkey:一样可以马上开始写。拿 J2EE 其他东西来说不太对等 12/17 14:20
4F:推 liaosankai:PHP要提高效能,的确要去写C才行,不过近来有出现帮助 12/17 14:44
5F:→ liaosankai:写C的Zephir可能比较不痛了,不过还是得有C的基础才行 12/17 14:45
6F:→ liaosankai:php的freamwork,phalcon2.0打算字Zephir重刻(期待XD) 12/17 14:47
7F:→ gname:我也觉得要拿jsp才对,用java是辗过去吧...XD 12/17 15:37
8F:推 lairrol:我也觉得Java那一块要用JSP去讲比较好 12/17 15:50
9F:推 olctw:PHP 就等 HHVM 成熟了, JAVA 设定繁琐+1 ... 12/17 16:25
10F:→ danny8376:说实话 你拿JSP比... 务实上有多少东西是单个JSP呢... 12/17 16:48
11F:→ danny8376:PHP整体来说 他就是CGI年代的产物 所以PHP大多时候就是 12/17 16:49
12F:→ danny8376:整个CGI的模式 12/17 16:49
13F:→ danny8376:不过JAVA确实可以单个JSP写www 12/17 16:51
14F:→ MOONRAKER:现在还有很多legacy的JSP code不是吗 没有framework 12/17 16:57
15F:→ MOONRAKER:爱怎麽写就怎麽写 跟老的ASP code一样恐怖 12/17 16:57
16F:→ MOONRAKER:又我有个问题 静态或动态平行处理怎麽分别 @@ 12/17 16:58
17F:→ dlikeayu:没讲到Python,把Java C#想优化的部份都优化好了 12/17 17:12
18F:→ dlikeayu:Depolyment也比Java简单,目前唯一问题就是lib还不够多 12/17 17:12
19F:→ erotic:Java高效率? 有没有搞错,用过SAP ERP、IBM Tivoli产品,全都 12/17 18:19
20F:→ erotic:是用Java,遇到要查询或reload的情况,就觉得好慢... 12/17 18:20
21F:→ F23ko:应该是DAO包太多层了吧?JAVA直接下JDBC也很快的 12/17 20:14
22F:→ erotic:而且点选画面上任何一个功能,反应有点慢,特别是Tivoli监控 12/17 20:30
23F:→ erotic:软体(Web介面),执行几个小时後,整个电脑的效能都被拖慢... 12/17 20:30
24F:→ danny8376:那楼上要不要想想拿PHP来写会变啥状况? 12/17 21:28
25F:→ danny8376:效率这东西是相对的 不是绝对的 懂吗? 12/17 21:30
26F:推 LaPass:Web介面会慢我总觉得是浏览器的memory leak 12/17 22:07
27F:推 PsMonkey:如果还是纯 page base 的 web 那就 [远目] 12/17 22:32
28F:→ KC73:Facebook: 呜!人家没有小又廉价啦~ 12/18 01:44
29F:→ rickysu:PHP的第三点缺点刚好是小弟在今年PHPConf上的讲题。 12/18 09:21
30F:→ rickysu:用PHP也是可以写WebSocket,效能也可以打趴一堆语言的。 12/18 09:21
32F:→ danny8376:楼上 那不是标准PHP的玩法啦www 12/18 13:18
33F:→ danny8376:目前把PHP写成常驻的还不多XDD 大多都还只是拿来玩而已 12/18 13:19