nodejs测试: buffer和字符串相加对比测试

Nodejs学习1(Buffer、fs模块) node.js就是一款应用程序,是一款软件,它可以运行JavaScript。 阅读详情


看到jsconf2010.pdf写的关于buffer对象和string字符串相加的对比图表。发现buffer对象响应的变化很大,眼见为实,因此证实一下:


准备:

apache ab模拟并发,编写两份代码

os: debian 6.0

cpu: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz

mem: 4G


代码:

var http = require('http'), string = '', buffer='';

for(i = 0; i < 16*1024; i++) {
    string +='d';
}

var server = http.createServer(
    function(req, res) {
        res.writeHead(200);
        res.end(string, 'ascii');
    }
);

server.listen(1339, '127.0.0.1');

buffer = new Buffer(16*1024);

for(i=0; i < buffer.length; i++) {
    buffer[i] = 100;
}

var server2 = http.createServer(
    function(req, res) {
        res.writeHead(200);
        res.end(buffer);
    }
);

server2.listen(1340, '127.0.0.1');

console.log('running');

    说明:定义两个监听,实现不同的字符串拼接,并监听不同的端口,方便测试。


运行:

/usr/mytools/httpd/bin/ab -c 300 -n 10000 http://127.0.0.1:1339
/usr/mytools/httpd/bin/ab -c 300 -n 10000 http://127.0.0.1:1340


结果:

madding@wmmad:~$ /usr/mytools/httpd/bin/ab -c 300 -n 10000 http://127.0.0.1:1339/
This is ApacheBench, Version 2.3 <$Revision: 655654 {1}gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        
Server Hostname:        127.0.0.1
Server Port:            1339

Document Path:          /
Document Length:        16384 bytes

Concurrency Level:      300
Time taken for tests:   3.602 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      164220000 bytes
HTML transferred:       163840000 bytes
Requests per second:    2776.02 [#/sec] (mean)
Time per request:       108.068 [ms] (mean)
Time per request:       0.360 [ms] (mean, across all concurrent requests)
Transfer rate:          44519.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   36 326.6      0    3008
Processing:     1   47  29.8     46     570
Waiting:        1   47  29.8     46     570
Total:          1   83 328.9     46    3094

Percentage of the requests served within a certain time (ms)
  50%     46
  66%     60
  75%     68
  80%     72
  90%     81
  95%     90
  98%    141
  99%   3033
 100%   3094 (longest request)
madding@wmmad:~$ /usr/mytools/httpd/bin/ab -c 300 -n 10000 http://127.0.0.1:1340/
This is ApacheBench, Version 2.3 <$Revision: 655654 {1}gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        
Server Hostname:        127.0.0.1
Server Port:            1340

Document Path:          /
Document Length:        16384 bytes

Concurrency Level:      300
Time taken for tests:   1.167 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      164220000 bytes
HTML transferred:       163840000 bytes
Requests per second:    8565.63 [#/sec] (mean)
Time per request:       35.024 [ms] (mean)
Time per request:       0.117 [ms] (mean, across all concurrent requests)
Transfer rate:          137368.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.9      0       9
Processing:     0   16  12.5     15     611
Waiting:        0   15  12.4     15     610
Total:          1   16  12.5     15     612

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     19
  75%     21
  80%     23
  90%     26
  95%     30
  98%     33
  99%     37
 100%    612 (longest request)

    说明:在300个并发,10000个请求下,采用buffer方式构造对象的性能优化是和之前的3倍以上。








qt实现OCC读取STEP模型并显示(附完整源码) 阅读详情

相关推荐

Synares病毒实战:如何手动清除C盘隐藏的Synaptics.exe(附资源修复脚本)

本文详细介绍了Synares感染型病毒的手动清除方法,该病毒伪装成Synaptics触摸板驱动,感染EXE和XLSX文件。文章提供了从病毒行为分析、母体清除到被感染文件修复的全流程指南,并附有实用的资源修复脚本和防御加固方案,帮助用户彻底清除这一顽固病毒。

lg888的博客 2335

Nodejs Buffer拼接

本文记录下最近遇到的buffer拼接问题。如果需要知道如何拼接 直接点击第二节 文章目录1 背景2 buffer拼接3 buffer 截取 1 背景 最近有一个需求需要将缩略图和视频文件合并到一起用HTTP POST 发送给服务器,服务器解析后拆成缩略图和视频文件存储到云存储中。 于是就写了下面这段代码读了读取两个文件,并相加。就实现下面这段代码。 const fs = require('fs'...

Andy Tools 9445

基于Lumerical FDTD的光栅耦合器宽带特性仿真与实验验证

本文详细介绍了基于Lumerical FDTD软件对光栅耦合器进行宽带特性仿真的完整流程。通过复现一个针对1310nm波段优化的经典光栅耦合器案例,文章从结构建模、光源设置、监视器布置到仿真运行与结果分析,逐步解析了如何准确模拟其耦合效率与带宽特性,并将仿真结果与实验数据进行对比验证,为硅光芯片的设计与优化提供了实用指导。

weixin_29294597的博客 511

node初探之buffer

通过on data获取到的chunk为buffer,如果编解码格式一致,则可以直接+=拼接,不然则用一个大buffer存储获取到的所有值,之后再进行转换操作。

u012516440的博客 249

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 731

uniapp 记录运动轨迹 开发_智能手环穿戴设备APP开发解决方案

智能手环是一种穿戴式智能设备,是目前备受关注的科技产品。目前智能手环具有的功能有记录日常生活中的运动数据、移动轨迹,定位等,有些还可以进行睡眠质量的检测,并将这些数据传送至移动端如手机、平板等,可对数据进行分析,指导健康生活的作用。而智能手环开发方案就是将这些功能实现,将算法烧录到主控板上。智能手环都有哪些功能  1、记录运动数据  对于喜欢健身的用户来说,智能手环记录的运动数据功能...

weixin_39678493的博客 1764

【NODE.JS】Buffer

Nodejs: Buffer的笔记,一些f方法

个人学习笔记 3895

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7704

js实现StringBuffer 性能提高

js实现StringBuffer 性能有提升 function StringBuffer() {     this.__strings__ = new Array; } StringBuffer.prototype.append = function (str) {     this.__strings__.push(str); }; StringBuffer

yuan882696yan的专栏 7542

Vue和Vue-Element-Admin(六):集成中的CORS(跨域资源共享)问题

在vue-element-admin登录集成时候碰到跨域资源共享问题,CORS(Cross-origin resource sharing)是浏览器的技术规范,浏览器可以发起跨域请求但Javascript脚本不能,传统的ajax只能获取在同域名下的资源,但Html5允许ajax发起跨域请求,解决方案有:JSONP、Flash、IFrame、CORS。 一、CORS(跨域资源共享)问题 针对vue-element-admin的登录模块的后端接口完成后,前端调用时候出现报错,因为前端的端口是9527而后.

叶子叶来 9614

游戏“中台”的故事——架构演进、团队协同与产品创新的深度剖析

什么是中台?在游戏行业里,中台并不是把所有技术都归口管理、统一“圈养”。更不是简单的工具集合。它代表的,是一种“模块化底座”——把业务的通用能力、基础支撑和数据结合,变成可复用、可扩展、可创新的技术体系。让“前台”专注于创新玩法、极致体验;让“后台”稳健保障数据、安全、性能;让“中台”统合各种资源、流程、工具,形成平台型生产力。游戏中台是团队协同、技术创新、业务增长并行的产物。它让开发从重复劳动解脱,带着创新冲锋;让运营靠数据说话,精准制胜;让产品实现高效迭代,生态爆发。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1948

Nodejs - Buffer

由于其中的一些函数用法都是一样的,只翻译了其中几个 Buffer        Stablity:3–稳定的 纯粹的javascript支持unicode码而对二进制不是很支持,当解决TCP流或者文件流的时候,处理流是有必要的。Node有很多的策略来解决流的问题   原始的资料存储在buffer类中,缓冲区和一个数字数组类似但和在V8引擎中的原始数据分派也是一致的,一个缓冲区不能调整

a13561560775的专栏 4963

十五、SAP-物料需求计划(MRP)

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1091

nodejs学前笔记 buffer和文件

提示:这个是我自己的学习笔记,记录的都是我觉得不怎么行的,或者是我觉得有用的这个是我自己的学习笔记。

Go_going_的博客 1302

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

nodeJs的buffer类

nodejs中的buffer类 在javascript中对于二进制的操作没有很良好的支持,但是在处理tcp或者文件流的时候(当然在js中这个不重要),必须处理二进制文件,所以在nodejs定义了一个buffer类,专门用于处理二进制流,主要创建一个二进制缓存区 查看补充1: 创建buffer对象——new Buffer(size) 创建一个buffer对象并且初始化大小(通过构造函数)

邓双的专栏 1283

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

nodejs-Buffer

Buffer 作为一个全局变量,不需要使用require(‘buffer’).Buffer来引入;Buffer的作用就是用来处理二进制数据流,直接对内存进行操作;Buffer的大小一旦被确定就不能被修改 //// nodejs 编码格式 支持 ascii, utf8, utf16le, ucs2, base64, latin1, binary, hex Buffer模块初解,创建、写入和读...

wasdref的专栏 859

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NodeJs关于Buffer

面向Buffer里面的方法举了3个例子 //var buf =new Buffer(20); //第一种构造方式size //console.log(buf,buf.length); // //API上有一处勘误,做了1个测试buffer.fill(value, [offset], [end]) // offet 填充数据的开始位置,不指定默认为 0 // function test

Test 琴侠参合散人 486

node MySQL buffer_Node.js缓冲模块Buffer

前言Javascript是为浏览器而设计的,能很好的处理unicode编码的字符串,但对于二进制或非unicode编码的数据就显得无能为力。 Node.js继承Javascript的语言特性,同时又扩展了Javascript语言,为二进制的数据处理提供了Buffer类,让Node.js 可以像其他程序语言一样,能处理各种类型的数据了。网上有很多讲Buffer的文章,大都讲的是原理,怎么使用几乎找不...

weixin_28925169的博客 185

nodejs的buffer

最近翻阅了node v0.10.4的buffer类的源代码,收获不少,也很久没有在cnode上发表文章了,想把一些收获分享给大家,有什么错误的地方希望大牛们指正啊。 前阵子有位rrestjs框架的使用者YanQ报告给我这样一个错误,跟我说在用户post很多内容的文章时会crash进程然后报如下错误:(热心的老雷帮我解决了问题) buffer.js:523 throw new Ran

Daniel 461

postman json report中nodejs 的buffer使用java解析

1、postman中使用newman导出json报告 newman命令可以生生成 jsonOut.json报告 newman run c:\test1.json --reporters cli,html,json,junit --reporter-json-export jsonOut.json --reporter-junit-export xmlOut.xml --reporter-htm...

zhuxi960的博客 798

浅析nodejs的buffer类

1、什么时候该用buffer,什么时候不该用 看一下如下的测试代码,分别是拼接各种不同长度的字符串,最后直接拼接了10MB的字符串 var string,string2,string3; var bufstr,bufstr2,bufstr3; var j; console.time('write 1000 string'); for(j=0;j<1000;j++){ v...

weixin_30634661的博客 84

NodeJs学习笔记 02 -- Buffer

Buffer类 用于操作二进制数据流 Buffer类 是一个全局的类,是一个比较罕见的不需要 require(‘buffer’) 就可以使用的类。 new Buffer(size) 分配一个新的 buffer 大小是 size 的8位字节. new Buffer(array) 分配一个新的 buffer 使用一个8位字节 array 数组. new Buffer(str, [encoding]

ym8023的博客 296

node MySQL buffer_Node JS Buffer使用理解

JavaScript 起初为浏览器而设计,没有读取或操作二进制数据流的机制。Buffer类的引入,则让NodeJS拥有操作文件流或网络二进制流的能力。Buffer基本概念Buffer 对象的内存分配不是在V8的堆内存中,而是Node在C++层面进行内存申请,可以理解为在内存中单独开辟了一部分空间,但是使用时分配内存则是由Node层面完成的,释放也是由Node中v8的gc机制自动控制。Buffer基...

weixin_35819549的博客 140

Node中Buffer对字符串的处理

声明:文章是摘自【深入浅出Node.js(六):Buffer那些事儿】,由于不能转发到这儿,为了方便自己查看,只好摘过来了,也相当于分享了。初体验作为前端的JSer,是一件非常幸福的事情,因为在字符串上从来没有出现过任何纠结的问题。我们来看看PHP对字符串长度的判断结果:<? php echo strlen("0123456789"); echo strlen("零一二三四五六七八九")

下一站,幸福 5137
上一篇: nodejs初识
下一篇: sina登陆https问题
「已注销」
博客等级 码龄20年 47粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值