2007-05-22
多核时代已经来临了,ruby还能热下去吗?
多核时代已经来临了,ruby还能热下去吗?
关注ruby很久了。看过很多对ruby的赞美之词。可是心里还是抱有很多疑虑的。
最近了解了一下相关了资料,竟然发现ruby不支持多线程,只支持伪线程(不是真正的多线程)。
不支持多线程必定会使ruby的应用受到很大的局限,比如:
1.不能应用在嵌入式系统中;
2.不能应用在桌面系统中;
3.不适合做海量访问的web系统;
真是因为这样,ruby也许只能局限于web编程方面。即使在这方面,功能复杂的企业应用系统和海量访问的大型网站也无法应用。
无法支持多线程,只能通过多进程的方式处理并发的连接。而进程是重量级的,无论怎么优化在性能上也是无法超过轻量级的线程。
现在,多核时代已经到来了。家用pc已经普及了双核的cpu,未来4核、8核甚至是几百核的cpu也并不是一件遥远的事情。在多核时代,支持多线程的语言肯定优于不不支持多线程的语言。随着多核时代的到来,java在性能上核C++的差距会越来越小。ruby的优势还存在么?
说ruby取代java简直是一件笑话。即使在web编程方面,ruby所能取代的,也许仅仅是php而已。
- 14:49
- 浏览 (8448)
- 论坛浏览 (9655)
- 评论 (29)
- 相关推荐
评论
最近退步了,在用PHP。
看完《PHP和MySQL Web开发》(PHP“圣经”)后才发觉人家用简单脚本也可以很好地实现结构化、重用性、扩展性。对PHP的认识才算又上了一层。又看了《Ajava和PHP开发》,运行了一下代码,速度超快,便又产生了一些不规矩的想法。
这下总算是搞清楚了,Web开发,中低端用PHP,要的是简单直接高效;高端用Java,要的是强和稳。这就是我的结论。
看完《PHP和MySQL Web开发》(PHP“圣经”)后才发觉人家用简单脚本也可以很好地实现结构化、重用性、扩展性。对PHP的认识才算又上了一层。又看了《Ajava和PHP开发》,运行了一下代码,速度超快,便又产生了一些不规矩的想法。
这下总算是搞清楚了,Web开发,中低端用PHP,要的是简单直接高效;高端用Java,要的是强和稳。这就是我的结论。
ipc貌似可以支持单线程1w+并发,机器稍微强一点,支持10w+并发也不是难事.稍稍优化一下,几十万的并发也可以做到.只不过php是做web的,速度这么快真是很向往啊.
单机10w并发,小型机?还是10w/minute?
jabber服务器还是写过的,java的10w+在线,2000+并发,dell 8核 4g内存,即使erlang 的green thread再优化,10w并发忒夸张了吧。
jabber服务器还是写过的,java的10w+在线,2000+并发,dell 8核 4g内存,即使erlang 的green thread再优化,10w并发忒夸张了吧。
引用
不妨告诉你,我上周在杭州参加大会,中午吃饭的时候,我右边坐的就是Yahoo的首选科学家,再右边就是现在在Yahoo工作的PHP之父Rasmus Leodorf,是他们两个人这样告诉我。你以为如何?你觉得他们会撒谎吗?
好象不对,记得在哪看过说yahoo的搜索模块是用ror的吧```
qqbuilder 写道
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
那如果有4个内核,岂不是可以支持40万并发请求,还是原来这么多,忽视多核时代的到来,本身就是个错误!
那如果有4个内核,岂不是可以支持40万并发请求,还是原来这么多,忽视多核时代的到来,本身就是个错误!
有没有搞清楚多核到底是怎么回事阿……
多核时代到来,究竟谁会受冲击?是进程之间隔离良好、接口清晰的多进程协作方式更容易在多个核上同时运行,还是大量使用共享内存空间的多线程模式更容易,难道这不是一目了然的吗?
本科的操作系统课程都没过关,还学人吹多核,啧啧啧……
判断一个语言能不能生存下去 不是看他的速度有多快的
如果真的这么简单的话 JAVA也不会到现在这样 都知道速度最快的是C 甚至汇编 那其他语言为什么还有生命力?
包括一个项目在初期设计 决定用哪种语言的时候 速度的快慢也是靠后考虑的一个因素 首先的哪种语言能适应业务需求 并且易于开发 其次如果速度有问题 也是想办法解决这个语言的速度问题 不是因为这个语言慢 我就不用他了 而用别速度快 但是随便写个东西都要很大人力的东西
如果真的这么简单的话 JAVA也不会到现在这样 都知道速度最快的是C 甚至汇编 那其他语言为什么还有生命力?
包括一个项目在初期设计 决定用哪种语言的时候 速度的快慢也是靠后考虑的一个因素 首先的哪种语言能适应业务需求 并且易于开发 其次如果速度有问题 也是想办法解决这个语言的速度问题 不是因为这个语言慢 我就不用他了 而用别速度快 但是随便写个东西都要很大人力的东西
robbin 写道
Godlikeme 写道
robbin 写道
不得不说,你自己说的才是一个笑话。PHP就是不支持多线程的,那有如何?Yahoo!就是全部采用PHP,人家网站可是全球访问量排名第一的网站,照你的理论,不是早该挂了吗?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
借问一句,10w并发不是要起100k进程吧?
如果是,我得回头好好学学操作系统了。
qiezi的文章没有找到,谁帮发个链接,谢了。
不需要10万个进程,Erlang的Server是通过消息机制来实现并发的。其实即使是lighttpd,也可以单进程单线程支持1万个并发连接的,所以并不是只有多线程或者多进程才能够处理并发,我觉得你确实有必要学习一下操作系统的网络IO模型了。
http://www.javaeye.com/topic/76007
在我看来erlang 是在语言级别实现了 Worker-process pattern 并无很特殊的地方,拿Worker-process pattern实现和 process per connection 处理模式进行比较没什么意义。
nio正在学习,不劳赐教。
我插一句, 多核对Java的冲击也很大, 并不是说这个普及了Java是最大赢家什么的, 实际上目前的情况看只能占到比较少的一点便宜.
主要问题在于Java GC的实现, 目前最成熟的GC是要整个JVM停机回收垃圾的, 这就是说管你多少个CPU多少个核心, 到了GC的时候统统候着去! SUN的并行GC在1.5的JVM才开始出现, 成熟度可想而知. 最近在 JDK1.6.0_01上用NetBeans, 配置里说启用并行GC可以很大提高GUI效率, 但是我改了参数发现右键菜单都看出来是从上到下刷出来的了,绝对不是特效, 可以感觉出延迟. 换作默认的经典GC就好了.
GC的问题在双核, 甚至4核的机器上跑可能还算不上致命问题, 但是前些天看到演示, Intel的 80 核心 CPU 已经在实验室里搞出来了, 面世也不会太远了. 到那个时候如果并行GC还是不成熟, 用经典GC可想而知, 运行一会儿程序 80 颗 CPU 核心就统一歇一会儿菜, 将是什么景象.
当然Java的好处就是把这些底层细节都丢给JVM实现去嘿咻了, 咱们写的Java程序现在用经典GC在少核机器上跑, 以后JVM GC改进了, 同样的程序放到多核机器上去跑完全不用修改, 直接就可以享受到好处. 但是对于JVM供应商来说, 它们去达到这个目标的成本并不比其他语言的实现要轻易, 而且要是跟Ruby这样的新生语言来比, 很可能因为历史包袱太多成本更高. 不过商业运作也很关键, Java一直以来有SUN在顶, 也算是有福气了.
主要问题在于Java GC的实现, 目前最成熟的GC是要整个JVM停机回收垃圾的, 这就是说管你多少个CPU多少个核心, 到了GC的时候统统候着去! SUN的并行GC在1.5的JVM才开始出现, 成熟度可想而知. 最近在 JDK1.6.0_01上用NetBeans, 配置里说启用并行GC可以很大提高GUI效率, 但是我改了参数发现右键菜单都看出来是从上到下刷出来的了,绝对不是特效, 可以感觉出延迟. 换作默认的经典GC就好了.
GC的问题在双核, 甚至4核的机器上跑可能还算不上致命问题, 但是前些天看到演示, Intel的 80 核心 CPU 已经在实验室里搞出来了, 面世也不会太远了. 到那个时候如果并行GC还是不成熟, 用经典GC可想而知, 运行一会儿程序 80 颗 CPU 核心就统一歇一会儿菜, 将是什么景象.
当然Java的好处就是把这些底层细节都丢给JVM实现去嘿咻了, 咱们写的Java程序现在用经典GC在少核机器上跑, 以后JVM GC改进了, 同样的程序放到多核机器上去跑完全不用修改, 直接就可以享受到好处. 但是对于JVM供应商来说, 它们去达到这个目标的成本并不比其他语言的实现要轻易, 而且要是跟Ruby这样的新生语言来比, 很可能因为历史包袱太多成本更高. 不过商业运作也很关键, Java一直以来有SUN在顶, 也算是有福气了.
qqbuilder 写道
bigpanda 写道
robbin 写道
多核和多机实在是两码事,增加cpu内核,整机的运算能力并不能翻番。你口口声声多核,但是连多核的基本知识都不了解。
运算能力为什么不能翻番?
一般的服务器程序的瓶颈在IO,而没有多少计算量。多核的机子的IO吞吐量和单核的没什么区别。
但是写计算复杂的程序,就大大不一样了,我这两天一直在修改mp3编码器,让它能在多线程环境下运行。双核计算机,就是可以同时处理两个文件的编码,速度提高了一倍。CPU的Usage达到100%。
对于robbin,我对他的话只能表示遗憾,也可以看出他涉足的领域比较狭窄,对新事物的出现不敢接受,而对于Ruby,我的看法它就是商业炒作的结果,动态语言是方向,但最后的赢家决不是它
robbin 写道
增加cpu内核,整机的运算能力并不能翻番----这要看你则么计算了,处理好的话可以接近翻番。
robbin 写道
Yahoo!就是全部采用PHP,人家网站可是全球访问量排名第一的网站,照你的理论,不是早该挂了吗?
我觉得你应该这么写Yahoo!就是全部采用HTML这还差不多
GOOGLE全球访问量排名第一?呕,I'm sorry,其实是微软,它才是第一,不过它既不用java,也不用PHP,用的是.net,让你们这些所谓的专家最看不上眼的东西,排名第二是GOOGLE,第三才是Yahoo!。我的老大!!!
你这个人很搞笑,回了你一个帖子,就连我接受不接受新事物,ruby是不是商业炒作的结论都得出来了,看得出来你的逻辑思维能力相当混乱,当然我不介意你怎么说我,因为我从来就没有说过我有多牛,比我牛的人多得是,当然不是你。
对了,不妨给你看看这个:
http://www.alexa.com/site/ds/top_500?qterm=
注意看右边的排名,千万别再看错了。
Godlikeme 写道
robbin 写道
不得不说,你自己说的才是一个笑话。PHP就是不支持多线程的,那有如何?Yahoo!就是全部采用PHP,人家网站可是全球访问量排名第一的网站,照你的理论,不是早该挂了吗?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
借问一句,10w并发不是要起100k进程吧?
如果是,我得回头好好学学操作系统了。
qiezi的文章没有找到,谁帮发个链接,谢了。
不需要10万个进程,Erlang的Server是通过消息机制来实现并发的。其实即使是lighttpd,也可以单进程单线程支持1万个并发连接的,所以并不是只有多线程或者多进程才能够处理并发,我觉得你确实有必要学习一下操作系统的网络IO模型了。
http://www.javaeye.com/topic/76007
robbin 写道
不得不说,你自己说的才是一个笑话。PHP就是不支持多线程的,那有如何?Yahoo!就是全部采用PHP,人家网站可是全球访问量排名第一的网站,照你的理论,不是早该挂了吗?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
进程模式不见得性能不如线程模型,这个以前已经讨论过了,你去看看看综合版qiezi的评测,Erlang写的Server在高并发请求下性能超过了C++的多线程Server。
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
借问一句,10w并发不是要起100k进程吧?
如果是,我得回头好好学学操作系统了。
qiezi的文章没有找到,谁帮发个链接,谢了。
bigpanda 写道
robbin 写道
多核和多机实在是两码事,增加cpu内核,整机的运算能力并不能翻番。你口口声声多核,但是连多核的基本知识都不了解。
运算能力为什么不能翻番?
一般的服务器程序的瓶颈在IO,而没有多少计算量。多核的机子的IO吞吐量和单核的没什么区别。
但是写计算复杂的程序,就大大不一样了,我这两天一直在修改mp3编码器,让它能在多线程环境下运行。双核计算机,就是可以同时处理两个文件的编码,速度提高了一倍。CPU的Usage达到100%。
对于robbin,我对他的话只能表示遗憾,也可以看出他涉足的领域比较狭窄,对新事物的出现不敢接受,而对于Ruby,我的看法它就是商业炒作的结果,动态语言是方向,但最后的赢家决不是它
robbin 写道
增加cpu内核,整机的运算能力并不能翻番----这要看你则么计算了,处理好的话可以接近翻番。
robbin 写道
Yahoo!就是全部采用PHP,人家网站可是全球访问量排名第一的网站,照你的理论,不是早该挂了吗?
我觉得你应该这么写Yahoo!就是全部采用HTML这还差不多
GOOGLE全球访问量排名第一?呕,I'm sorry,其实是微软,它才是第一,不过它既不用java,也不用PHP,用的是.net,让你们这些所谓的专家最看不上眼的东西,排名第二是GOOGLE,第三才是Yahoo!。我的老大!!!
robbin 写道
多核和多机实在是两码事,增加cpu内核,整机的运算能力并不能翻番。你口口声声多核,但是连多核的基本知识都不了解。
运算能力为什么不能翻番?
一般的服务器程序的瓶颈在IO,而没有多少计算量。多核的机子的IO吞吐量和单核的没什么区别。
但是写计算复杂的程序,就大大不一样了,我这两天一直在修改mp3编码器,让它能在多线程环境下运行。双核计算机,就是可以同时处理两个文件的编码,速度提高了一倍。CPU的Usage达到100%。
hurricane1026 写道
林秋枫 写道
robbin 写道
qqbuilder 写道
Erlang这种标准多进程模型可是号召C100K,单机支撑10万并发请求,怎么样?
那如果有4个内核,岂不是可以支持40万并发请求,还是原来这么多,忽视多核时代的到来,本身就是个错误!
那如果有4个内核,岂不是可以支持40万并发请求,还是原来这么多,忽视多核时代的到来,本身就是个错误!
多核和多机实在是两码事,增加cpu内核,整机的运算能力并不能翻番。你口口声声多核,但是连多核的基本知识都不了解。
多核可能提高的效能也不一定比得上多CPU。但是效能应该是类似的。
你能不能解释一下为什么大型的服务器总是要用多CPU的原因呢?
有些应用根本不看运算能力,i/o瓶颈才是关键。。。真正完全消耗计算能力的应用有几个?
对于计算能力,好像是有这么一句话:不管硬件是性能提高多少,软件都有办法消耗掉.
发表评论
该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子
最近加入圈子
最新评论
-
(转)JavaFX Script将终 ...
我一直没搞明白,它怎么在网页里用。
-- by jolestar -
比较一下java写文本文件文 ...
我也觉得不准,你可以把这几种写入顺序调整一下,结果可能会不一样了
-- by huangyy -
比较一下java写文本文件文 ...
如果用nio的话,性能会更好..
-- by simohayha -
比较一下java写文本文件文 ...
这个测试不准!
-- by anry513 -
多核时代已经来临了,ruby ...
最近退步了,在用PHP。 看完《PHP和MySQL Web开发》(PHP“圣经” ...
-- by lgx522







评论排行榜