luanet性能测试
测试环境 intel-i5 双核 2.53HZ 服务器客户端均在本机运行
测试内容:echo回射,每个包的字节数在20字节内
luanet
连接数 每秒回射数
1 19,000/s
10 12,5000/s
100 12,0000/s
1000 80,000/s
node.js
连接数 每秒回射数
1 27,000/s
10 30,000/s
100 30,000/s
1000 27,000/s
连接数 每秒回射数
1 16,500/s
10 74,000/s
100 75,000/s
1000 51,000/s
从测试结果上看只有在1个连接的情况下luanet不如node.js,当连接数上去之后 luanet每秒的回射数基本都在
node.js的3倍左右.在所有的连接数下都比luvit 高30%以上.
node.js:echo.js
- var net = require('net');
- var server = net.createServer(function(c) { // 'connection' 监听器
- console.log('一个新连接');
- c.on('end', function() {
- console.log('连接断开');
- });
- c.on('data',function(data){
- c.write(data);
- });
- c.on('close',function(){
- console.log('连接断开');
- });
- c.on('error',function(e){
- });
- });
- server.listen(8010, function() { // 'listening' 监听器
- console.log('服务器监听8010');
- });
luvit:echo.lua
- local net = require('net')
- net.createServer(function (client)
- -- Echo everything the client says back to itself
- client:pipe(client)
- end):listen()
- print("TCP echo server listening on port 8010")
luanet:echoserver.lua
- local cjson = require "cjson"
- function on_data(s,data,err)
- if not data then
- print("a client disconnected")
- C.close(s)
- else
- local tb = cjson.decode(data)
- C.send(s,cjson.encode(tb),nil)
- end
- end
- function on_newclient(s)
- print("on_newclient")
- if not C.bind(s,{recvfinish = on_data})then
- print("bind error")
- C.close(s)
- end
- end
- C.listen(IPPROTO_TCP,SOCK_STREAM,net.netaddr_ipv4("127.0.0.1",),
- {onaccept=on_newclient})
统一的测试客户端:echoclient.lua
- local net = require "lua/netaddr"
- local cjson = require "cjson"
- local Sche = require "lua/scheduler"
- local count =
- function on_data(s,data,err)
- if not data then
- print("a client disconnected")
- C.close(s)
- else
- count = count +
- local tb = cjson.decode(data)
- C.send(s,cjson.encode(tb),nil)
- end
- end
- function on_connected(s,remote_addr,err)
- print("on_connected")
- if s then
- if not C.bind(s,{recvfinish = on_data}) then
- print("bind error")
- C.close(s)
- else
- print("bind success")
- C.send(s,cjson.encode({"hahaha"}),nil)
- end
- end
- end
- print("echoclient")
- for i=, do
- C.connect(IPPROTO_TCP,SOCK_STREAM,net.netaddr_ipv4("127.0.0.1",),
- nil,{onconnected = on_connected},)
- end
- local tick = C.GetSysTick()
- local now = C.GetSysTick()
- while true do
- now = C.GetSysTick()
- if now - tick >= then
- print(count*/(now-tick) .. " " .. now-tick)
- tick = now
- count =
- end
- Sche.Sleep()
- end
luanet rpc测试:客户端调用服务端的Plus函数,函数只是把客户端提供的两个参数相加并返回
平均每秒rpc调用次数在6,8000左右.而用C+协程实现的版本在70,0000左右.我试着用luajit来运行 同样的测试,非常意外的是性能差了一大截,
只有可怜的2,000次,具体原因还在调查中.
测试代码:server.lua,client.lua
luanet性能测试的更多相关文章
- Ignite性能测试以及对redis的对比
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...
- 性能测试工具 wrk 安装与使用
介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...
- .NET Core性能测试组件BenchmarkDotNet 支持.NET Framework Mono
.NET Core 超强性能测试组件BenchmarkDotNet 支持Full .NET Framework, .NET Core (RTM), Mono. BenchmarkDotNet支持 C# ...
- C#中实现并发的几种方法的性能测试
C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...
- 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型
关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...
- PostgreSql性能测试
# PostgreSql性能测试 ## 1. 环境+ 版本:9.4.9+ 系统:OS X 10.11.5+ CPU:Core i5 2.7G+ 内存:16G+ 硬盘:256G SSD ## 2. 测试 ...
- Web系统性能测试术语简介
并发用户 并发一般分为两种情况.一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作.这种操作一般指做同一类型的业务,比如在信用卡审批业务中,一定数目的用户在同一时刻对已经完成的审批业务 ...
- Web前端性能测试-性能测试知多少---深入分析前端站点的性能
针对目前接手的web前端的性能,一时间不知道从什么地方入手,然后经过查找资料,发现其实还是蛮简单的. 前端性能测试对象: HTML.CSS.JS.AJAX等前端技术开发的Web页面 影响用户浏览网页速 ...
- 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...
随机推荐
- Java如何以(MMM)格式显示一个月份的名称?
JAVA中,如何以(MMM)格式显示一个月份的名称? 此示例显示如何使用Calender类的Calender.getInstance()方法和Formatter类的fmt.format()方法来显示( ...
- Spring JDBC更新数据
以下示例将展示如何使用Spring jdbc执行更新数据库表的记录,这里演示如何更新student表中指定条件的记录. 语法: String updateQuery = "update St ...
- php -- 取整数
PHP取整数函数常用的四种方法,下面收集了四个函数: 经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已--主要是:ceil,floor,round,intval ceil — 进一 ...
- Python——signal
该模块为在Python中使用信号处理句柄提供支持.下面是一些使用信号和他们的句柄时需要注意的事项: 除了信号 SIGCHLD 的句柄遵从底层的实现外,专门针对一个信号的句柄一旦设置,除非被明确地重置, ...
- window wlan 相关服务
1.Extensible authentication protocol 2.cng key lsolation 3.wlan autoconfig
- C# 把string字符导出到txt文档方法
public static string writtxt(string html, string file) { FileStream fileStream = new FileStream(Envi ...
- vue v-if与v-show使用注意问题
在使用中发现v-show和v-if用哪个都不可以控制元素块的显示隐藏, 之前v-show和v-if都是这样写的: <span v-if="{loadingComplete:false} ...
- WebXml.com.cn 中国股票行情数据 WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新
http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
- perforce使用技巧
如果用其他编辑器打开一个在perforce上的文件, 只需要在notepad++ (或者其他)上右键选择 然后到perforce的workspace里Ctrl + V 即可定位到该文件. 再使用Ctr ...
- SmbException: 0xC000007F
The error code 0xC000007F means: NT_STATUS_DISK_FULL There is not enough space on the disk. https: ...