Javascript

2010,10,04

当你还沉溺于各种层出不穷的“Web容器”和“Web框架”的时候, 你或许没有留意到某个再平常不过的语言正在步入强大到你将无法想像的境界?

JavaEye 不久前引用了一篇关于 Javascript 最新发展的文章: 警惕Java,迎来JavaScript 。引起了广泛的讨论。 对于其中 node.js 项目, 我编译了最新的 nodejs (v0.2.0 2010.09.24 commit 353e2565d5867f457c03e5e011b5e13a2254b96f), 并按照其 helloworld 例子做了测试, 测试结果显示其服务器端性能确实强悍! 就连 Go 语言的那个 Helloworld HTTP 例子也没这么牛。。。

( 在我的 Gateway T6832c 本本上,Intel Core 2 Duo T5750,2G DDR2 RAM , $ ab -n 10000 -c 30 http://127.0.0.1:8124/ 得到大概 7000rps 左右的速度,最长的请求也只是10多ms而已。 $ ab -n 100000 -c 1000 http://127.0.0.1:8124/ 得到大概 6000rps 左右的速度,最长的请求大概是9000多ms 。 而 Go 语言的 Helloworld HTTP 例子不大稳定, 经常在中间几万个请求时就断掉了 (apr_socket_recv: Connection reset by peer (104)), 成功时候得到大概 5000多rps 速度,最长的请求大概在16000ms左右。 不过测试中 node.js 使用 CPU 两个核心经常轮流达到 100% , 而 Go 程序使用 CPU 两个核心好像一般徘徊在 80%-90% 之间,最多不会达到 100% 。 )

粗略阅读了新颖的 node.js 官方文档, 想到的正如上面那篇文章所指出的: “它的最重要的一项革新就是实现了针对服务器端开发的面向事件的编程模型。” 就算她暂时还不能“把Java从唯我独尊的宝座上拉下来”, 但是却开始有望和其他流行的脚本语言如 Python,Ruby 等在 Web Server 领域较量了。 因为看上去她的确是已经满足作为一种“试验品”了, 嗯,强烈期待基于此强力基础项目的项目面世!

回头看看 Javascript 的近来的进展, 比如在 NoSQL 方面,CouchDB 和 MongoDB 都使用到 Mozilla 的 SpiderMonkey 项目。 其中特别是 MongoDB 已经应用于很多大型项目之中,如 sourceforge , github 等。 Javascript 的“魔掌”已经触及到越来越多本来不“属于”她的领域了。 而且其表现出来的性能真的是非常的诱人。 (MongoDB 一个很“牛”的地方是其编译期间产生的中间文件超级大,加起来大概有1GB多, 而且随着版本的更新,这个数目似乎一直在攀升。 相比其几MB的源文件和几十MB的编译后得到的二进制程序实在令人费解。。。)

不过,有点让人“担忧”的是:这是否会使开发人员的素质下降呢? 请看这篇小文章: Javascript程序员嘴最脏?? 呵呵 :-)