c*e
2 楼
node.js快,到底什么是根本的原因?
1。 javascript里用callback,这样就 non-block i/o
2. 用到了web server的os的multi-threading
3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
传输时更快
4。以上都是。
1。 javascript里用callback,这样就 non-block i/o
2. 用到了web server的os的multi-threading
3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
传输时更快
4。以上都是。
N*r
3 楼
EB2
S*r
7 楼
最多算满足一条而已
得CLAIM至少三条
得CLAIM至少三条
d*i
8 楼
Two main points:
1. V8 Engine - Super fast JavaScript engine
2. OS level async I/O. Node is written by C, C++, so check
#include in Node source code. Under the hood, various
implementations in different OS kernel: Linux, Solaris, AIX, Windows
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
1. V8 Engine - Super fast JavaScript engine
2. OS level async I/O. Node is written by C, C++, so check
#include
implementations in different OS kernel: Linux, Solaris, AIX, Windows
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
a*1
11 楼
感觉这个证老中快要人手一个了。
d*e
12 楼
multi-threading这个是很慢的。
类似的,lock很慢,所以有时候需要spin lock.
多线程在特定场合是不如node这种event driven的单线程,因为免去了线程切换的代价。
类似的,haskell里面的lightweight threads才1000多字节,之间的切换也很快。
这些都是high concurrency成为可能的原因。
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
类似的,lock很慢,所以有时候需要spin lock.
多线程在特定场合是不如node这种event driven的单线程,因为免去了线程切换的代价。
类似的,haskell里面的lightweight threads才1000多字节,之间的切换也很快。
这些都是high concurrency成为可能的原因。
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
d*i
14 楼
这个没有绝对好坏,同样是web server,基于多线程的Apache还是比基于event的Nginx
流行很多,同样Java的Tomcat也比Netty流行很多。实际都是取决于case by case,任
何问题都没有什么都好的银弹。
价。
【在 d******e 的大作中提到】
: multi-threading这个是很慢的。
: 类似的,lock很慢,所以有时候需要spin lock.
: 多线程在特定场合是不如node这种event driven的单线程,因为免去了线程切换的代价。
: 类似的,haskell里面的lightweight threads才1000多字节,之间的切换也很快。
: 这些都是high concurrency成为可能的原因。
流行很多,同样Java的Tomcat也比Netty流行很多。实际都是取决于case by case,任
何问题都没有什么都好的银弹。
价。
【在 d******e 的大作中提到】
: multi-threading这个是很慢的。
: 类似的,lock很慢,所以有时候需要spin lock.
: 多线程在特定场合是不如node这种event driven的单线程,因为免去了线程切换的代价。
: 类似的,haskell里面的lightweight threads才1000多字节,之间的切换也很快。
: 这些都是high concurrency成为可能的原因。
p*2
15 楼
h*c
18 楼
how this 快 is quantified?
h*c
19 楼
这个还有点干货,可惜前十的东西基本都没摸过
https://www.techempower.com/benchmarks/#section=data-r10&hw=peak&test=json
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
https://www.techempower.com/benchmarks/#section=data-r10&hw=peak&test=json
【在 c*********e 的大作中提到】
: node.js快,到底什么是根本的原因?
: 1。 javascript里用callback,这样就 non-block i/o
: 2. 用到了web server的os的multi-threading
: 3。 用到了websocket,这是双向交流,tcp;比http更底层,也更轻,这样在internet上
: 传输时更快
: 4。以上都是。
d*i
20 楼
Apache HTTP server still dominates although Nginx catches up a little bit as
a distance 2nd place. Apache used to be over 65% market share.
http://w3techs.com/technologies/overview/web_server/all
【在 w**z 的大作中提到】
: nginx 很火啊。我们都从Apache 转到Nginx 了。
:
: Nginx
a distance 2nd place. Apache used to be over 65% market share.
http://w3techs.com/technologies/overview/web_server/all
【在 w**z 的大作中提到】
: nginx 很火啊。我们都从Apache 转到Nginx 了。
:
: Nginx
w*z
23 楼
millions of WordPress installations are all on Apache.
现在新site, nginx. 应该不比Apache 差。
as
【在 d****i 的大作中提到】
: Apache HTTP server still dominates although Nginx catches up a little bit as
: a distance 2nd place. Apache used to be over 65% market share.
: http://w3techs.com/technologies/overview/web_server/all
现在新site, nginx. 应该不比Apache 差。
as
【在 d****i 的大作中提到】
: Apache HTTP server still dominates although Nginx catches up a little bit as
: a distance 2nd place. Apache used to be over 65% market share.
: http://w3techs.com/technologies/overview/web_server/all
T*i
34 楼
看是什么事情,一般node也就是把数据从一个地方搬运到另外一个地方。基本只处理异
步I/O。这种情况下动几步就进入native C/C++实现的函数里面去了。当然速度快了。
另外,Google V8是基于C++,没C++ node玩不转。
V8是JIT。也就是能编译成机器码再运行。即使如此,这种dynamic typed JIT性能肯定
不如JVM。其实,同样是dynamic typed,V8都不一定干得过LuaJIT。
其实我个人更喜欢Lua多一些。Lua可能是最简单的语言了。我觉得任何人都很难会不喜
欢Lua。
步I/O。这种情况下动几步就进入native C/C++实现的函数里面去了。当然速度快了。
另外,Google V8是基于C++,没C++ node玩不转。
V8是JIT。也就是能编译成机器码再运行。即使如此,这种dynamic typed JIT性能肯定
不如JVM。其实,同样是dynamic typed,V8都不一定干得过LuaJIT。
其实我个人更喜欢Lua多一些。Lua可能是最简单的语言了。我觉得任何人都很难会不喜
欢Lua。
w*a
35 楼
在国内做游戏的时候写了一堆lua。
这个语言数组从1开始,没有continue,没有++没有+=。
想写个类还要蛋疼一下。
纯粹从语法角度来看实在对lua喜欢不起来。
当然,他简单,好改好hack,很容易做热更新,LUAjit速度也快。
搞个手游开发写写脚本基本上就是舒适健康有活力。
【在 T********i 的大作中提到】
: 看是什么事情,一般node也就是把数据从一个地方搬运到另外一个地方。基本只处理异
: 步I/O。这种情况下动几步就进入native C/C++实现的函数里面去了。当然速度快了。
: 另外,Google V8是基于C++,没C++ node玩不转。
: V8是JIT。也就是能编译成机器码再运行。即使如此,这种dynamic typed JIT性能肯定
: 不如JVM。其实,同样是dynamic typed,V8都不一定干得过LuaJIT。
: 其实我个人更喜欢Lua多一些。Lua可能是最简单的语言了。我觉得任何人都很难会不喜
: 欢Lua。
这个语言数组从1开始,没有continue,没有++没有+=。
想写个类还要蛋疼一下。
纯粹从语法角度来看实在对lua喜欢不起来。
当然,他简单,好改好hack,很容易做热更新,LUAjit速度也快。
搞个手游开发写写脚本基本上就是舒适健康有活力。
【在 T********i 的大作中提到】
: 看是什么事情,一般node也就是把数据从一个地方搬运到另外一个地方。基本只处理异
: 步I/O。这种情况下动几步就进入native C/C++实现的函数里面去了。当然速度快了。
: 另外,Google V8是基于C++,没C++ node玩不转。
: V8是JIT。也就是能编译成机器码再运行。即使如此,这种dynamic typed JIT性能肯定
: 不如JVM。其实,同样是dynamic typed,V8都不一定干得过LuaJIT。
: 其实我个人更喜欢Lua多一些。Lua可能是最简单的语言了。我觉得任何人都很难会不喜
: 欢Lua。
m*u
36 楼
搞笑。这个板上还真有些不装x难受的的要死的。这也信?
j*f
37 楼
Node快还是在io,跟复杂逻辑没啥关系。也就是说,写复杂逻辑时它和其他语言没什么
优势,当然我也不觉得它有啥劣势。还是在你的喜好上。
优势,当然我也不觉得它有啥劣势。还是在你的喜好上。
h*c
39 楼
复杂逻辑是指编译层面的优化吗?
比如dead code
condition boolean always true or always false etc
比如dead code
condition boolean always true or always false etc
h*c
40 楼
还有比如不是final不让进anonymous
h*c
42 楼
why 不是final不让进anonymous
p*2
43 楼
N*n
47 楼
Don't kid yourself. JS is far more difficult to refactor than
C# or Java. Check what those have that experience said.
http://ripper234.com/p/javascript-refactoring-is-hard/
【在 p*****2 的大作中提到】
:
: 我做script好几年了,最喜欢refactor了。比static的简单多了。
p*2
48 楼
这个破文章有啥说服力?
【在 N********n 的大作中提到】
:
: Don't kid yourself. JS is far more difficult to refactor than
: C# or Java. Check what those have that experience said.
: http://ripper234.com/p/javascript-refactoring-is-hard/
N*n
49 楼
If you cannot figure this by now then you really don't know it.
To have good refactoring support, IDE has to know as much what is
defined in your code as possible. That's easy in static languages
but hard in dynamic languages as by design DLs are supposed to be
dynamic. You are sure what's being defined until runtime so IDE
cannot help you @ edit time.
【在 p*****2 的大作中提到】
:
: 这个破文章有啥说服力?
p*2
50 楼
完全忽视了script的优点。
【在 N********n 的大作中提到】
:
: If you cannot figure this by now then you really don't know it.
: To have good refactoring support, IDE has to know as much what is
: defined in your code as possible. That's easy in static languages
: but hard in dynamic languages as by design DLs are supposed to be
: dynamic. You are sure what's being defined until runtime so IDE
: cannot help you @ edit time.
b*e
53 楼
Worker thread without shared memory. This has been done in browsers for long
(html5). 不算步子太大,蛋的扯不着。对用户来讲几乎是透明,因为会被framework
盖住。但是效率提高会很强,而且不怕某个CPU bound的运算block整个process。
【在 d******e 的大作中提到】
: js当然是很好的语言。特别是新的es6出来后。
: typescript(我软出的神器)上台后,开发效率秒杀java/scala, 速度和可验证性秒杀
: python ruby.前后端通吃。
: es7会出object.observe 和多线程(这个真心不看好,步子太大怕扯到蛋)
: 这些还有谁能做到?
(html5). 不算步子太大,蛋的扯不着。对用户来讲几乎是透明,因为会被framework
盖住。但是效率提高会很强,而且不怕某个CPU bound的运算block整个process。
【在 d******e 的大作中提到】
: js当然是很好的语言。特别是新的es6出来后。
: typescript(我软出的神器)上台后,开发效率秒杀java/scala, 速度和可验证性秒杀
: python ruby.前后端通吃。
: es7会出object.observe 和多线程(这个真心不看好,步子太大怕扯到蛋)
: 这些还有谁能做到?
p*2
56 楼
https://github.com/peking2/coffee-monad
【在 n******n 的大作中提到】
: 来点干货,给代码看看script的rf怎么比static简单吧。
N*n
58 楼
Not true. The more complex the code is, the more potential mistakes
it contains. W/ static languages, IDE can catch a lot of them for
you at edit/compile time. Cannot say the same thing for DLs.
And Javascript weak namespace support doesn't help either. Complex
code needs to be organized into modules. Modern static languages
do that easily. JS OTOH is still full of global variables.
【在 p*****2 的大作中提到】
:
: 他说的是复杂逻辑。在表达逻辑上边JS跟其他语言没啥区别。
p*2
59 楼
node讲究的就是npm
你说的还是static dynamic的区别 跟js没关系
【在 N********n 的大作中提到】
:
: Not true. The more complex the code is, the more potential mistakes
: it contains. W/ static languages, IDE can catch a lot of them for
: you at edit/compile time. Cannot say the same thing for DLs.
: And Javascript weak namespace support doesn't help either. Complex
: code needs to be organized into modules. Modern static languages
: do that easily. JS OTOH is still full of global variables.
你说的还是static dynamic的区别 跟js没关系
【在 N********n 的大作中提到】
:
: Not true. The more complex the code is, the more potential mistakes
: it contains. W/ static languages, IDE can catch a lot of them for
: you at edit/compile time. Cannot say the same thing for DLs.
: And Javascript weak namespace support doesn't help either. Complex
: code needs to be organized into modules. Modern static languages
: do that easily. JS OTOH is still full of global variables.
p*1
60 楼
其实不是rf不行,而是script的设计要比static的对程序员的经验要求高。如果是新手
的话,建议从c++或者java做起,培养好的习惯和思维。等到经验比较足了,再做基于
js,python的大系统。
的话,建议从c++或者java做起,培养好的习惯和思维。等到经验比较足了,再做基于
js,python的大系统。
N*n
70 楼
语言是工具不是花瓶,是拿来干活用的不是当摆设看怎么美观的。任何语言
都有表达能力,静态语言的表达问题时出错比动态少,所以做工程方便。一
个class Foo定义一个变量a, 如果代码写成foo.b,IDE马上报错Foo没有定
义b,有错立刻改,这个就是做工程趁手的好语言。
换JS就不行了,Foo的定义动态可变。没准哪来个prototype就加个b进去,
IDE无法知道你这程序动态咋执行的,所以干脆不纠错,你爱写啥写啥,
foo.c, foo.d, foo.whatever随你便。谁知道Foo到底咋定义的。为了动态
导致IDE爱莫能助是典型的捡芝麻丢西瓜,说明JS设计者分不清主次。
【在 p*****2 的大作中提到】
: 其实你也没必要总说大项目
: 现在soa 大项目没那么多了 所以脚本更流行了
: 本来讨论的是复杂逻辑 js表达力没有任何问题 不然你举个例子
: 其实就算大项目 google js也好几个
p*2
71 楼
你也知道语言是用来干活的呀?说了半天你说的这些都是script的问题,跟JS没关系呀
。
【在 N********n 的大作中提到】
:
: 语言是工具不是花瓶,是拿来干活用的不是当摆设看怎么美观的。任何语言
: 都有表达能力,静态语言的表达问题时出错比动态少,所以做工程方便。一
: 个class Foo定义一个变量a, 如果代码写成foo.b,IDE马上报错Foo没有定
: 义b,有错立刻改,这个就是做工程趁手的好语言。
: 换JS就不行了,Foo的定义动态可变。没准哪来个prototype就加个b进去,
: IDE无法知道你这程序动态咋执行的,所以干脆不纠错,你爱写啥写啥,
: foo.c, foo.d, foo.whatever随你便。谁知道Foo到底咋定义的。为了动态
: 导致IDE爱莫能助是典型的捡芝麻丢西瓜,说明JS设计者分不清主次。
相关阅读
feifei li 也去google请帮推荐个论坛、问答或微博客开源系统 支持推送和邮件订阅mysql频繁写的时候老是挂掉,应该怎么办?js Q: array[2,0,1,1] => 1102最近打算研究一下信用值的算法一道系统设计题求思路。javascript 6现在可以直接在用了嘛?有些 linux 上没有 apt,apt-get, 如何装呢?能在这里发招人的广告吗?用CNN,怎么计算需要的数据量?【南加内推】Big data SWE (转载)请教下微信红包算法,谢谢我是马工,我就盼着公司layoff人 (转载)sqlite3 db.close() called before db.serialized() finishes诈骗里的统计学问个基本问题,在 mac 的linux 上怎么装 apt-get, wget 这些东西pirate software (转载)Get mysql table index size? preferably size in mb.profile 一个golang project 生成一个call graphYukihiro Matsumoto: How emacs changed my life