hi-nginx-javascript vs node.js
hi-nginx-1.4.9已经支持javascript,这意味着把javascript应用于后端开发,将不再只有nodejs这唯一的途径和方法。由于java本身对javascript的极好支持,使得在hi-nginx中,可以直接在javascript脚本中使用java——相当于把java嵌入了javascript。因此,你随时可以用java写个库或者类,然后在javascript中随便玩。这比用c/c++写node.js扩展舒服多了。
那么,hi-nginx-javascript VS node.js,如何呢?来个node.js (6.12.0)helloworld比较下。
fedora 25,4g,2core,i5,笔记本
node.js:
var http = require('http'); http.createServer(function (request, response) { // 发送 HTTP 头部 // HTTP 状态值: 200 : OK // 内容类型: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // 发送响应数据 "Hello World" response.end('Hello World'); }).listen(8888); // 终端打印如下信息 console.log('Server running at http://127.0.0.1:8888/');
hi-nginx-javascript:
location / { hi_need_cache off; hi_cache_expires 5s; hi_need_kvdb on; hi_kvdb_size 10; hi_kvdb_expires 5s; hi_need_cookies on; hi_need_headers on; hi_need_session on; hi_session_expires 300s; hi_javascript_lang javascript; hi_javascript_extension js; #hi_javascript_script javascript/index.js; hi_javascript_content "hi_res.content='hello,world';hi_res.status=200;"; }
使用ab作为压力测试工具:ab -c 1000 -n 500000。从最终稳定结果RPS来看,n=500000对nodejs来说是越不过去,
Completed 50000 requests Completed 100000 requests Completed 150000 requests apr_socket_recv: Connection reset by peer (104) Total of 162214 requests completed
而hi-nginx-javascript均值在14000多左右:
Server Software: nginx/1.14.0 Server Hostname: 127.0.0.1 Server Port: 8086 Document Path: / Document Length: 11 bytes Concurrency Level: 1000 Time taken for tests: 34.366 seconds Complete requests: 500000 Failed requests: 0 Total transferred: 139000000 bytes HTML transferred: 5500000 bytes Requests per second: 14549.43 [#/sec] (mean) Time per request: 68.731 [ms] (mean) Time per request: 0.069 [ms] (mean, across all concurrent requests) Transfer rate: 3949.94 [Kbytes/sec] received
把n降低至100000,nodejs偶尔能完成测试,RPS的最好成绩是8900多,其值在6000至9000间徘徊:
Server Software: Server Hostname: 127.0.0.1 Server Port: 8888 Document Path: / Document Length: 11 bytes Concurrency Level: 1000 Time taken for tests: 11.114 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 11200000 bytes HTML transferred: 1100000 bytes Requests per second: 8997.62 [#/sec] (mean) Time per request: 111.141 [ms] (mean) Time per request: 0.111 [ms] (mean, across all concurrent requests) Transfer rate: 984.11 [Kbytes/sec] received
而hi-nginx-javascript则依然表现出众,与n=500000是差不多:
Server Software: nginx/1.14.0 Server Hostname: 127.0.0.1 Server Port: 8086 Document Path: / Document Length: 11 bytes Concurrency Level: 1000 Time taken for tests: 7.038 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 27800000 bytes HTML transferred: 1100000 bytes Requests per second: 14208.52 [#/sec] (mean) Time per request: 70.380 [ms] (mean) Time per request: 0.070 [ms] (mean, across all concurrent requests) Transfer rate: 3857.39 [Kbytes/sec] received
结论:
hi-nginx-javascript 完胜 nodejs。
hi-nginx github: https://github.com/webcpp/hi-nginx
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript 编程精解 中文第三版 十九、项目:像素艺术编辑器
十九、项目:像素艺术编辑器 原文:Project: A Pixel Art Editor 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 我看着眼前的许多颜色。 我看着我的空白画布。 然后,我尝试使用颜色,就像形成诗歌的词语,就像塑造音乐的音符。 Joan Miro 前面几章的内容为你提供了构建基本的 Web 应用所需的所有元素。 在本章中,我们将实现一个。 我们的应用将是像素绘图程序,你可以通过操纵放大视图(正方形彩色网格),来逐像素修改图像。 你可以使用它来打开图像文件,用鼠标或其他指针设备在它们上面涂画并保存。 这是它的样子: 在电脑上绘画很棒。 你不需要担心材料,技能或天赋。 你只需要开始涂画。 组件 应用的界面在顶部显示大的<canvas>元素,在它下面有许多表单字段。 用户通过从<select>字段中选择工具,然后单击,触摸或拖动画布来绘制图片。 有用于绘制单个像素或矩形,填充区域以及从图片中选取颜色的工具。 我们将编辑器界面构建为多个组件和对象,负责 DOM 的一部分...
- 下一篇
初学Python——列表生成式、生成器和迭代器
一、列表生成式 假如现在有这样一个需求:快速生成一个列表[1,2,3,4,5,6,7,8,9,10],该如何实现? 在不知道列表生成式的情况下,可能会这样写: a=[1,2,3,4,5,6,7,8,9,10] 如果要每个值+1呢?可能会这样: for index,i in enumerate(a): a[index] +=1 print(a) 不够方便,这里讲一个快速生成列表的方法:列表生成式。意思就是立即生成列表。 生成一个1到10的列表: a = [i+1 for i in range(10)] print( a) # output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 生成一个2~20的偶数列表: a=[ i*2 for i in rang(1,11)] print(a) # output: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 它相当于: a=[] for i in range(1,11): #列表生成式 a.append(i*2) print(a) 生成的列表已经存在在内存中。 二、生成器 通过列表生成式,我们可...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境