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 ... 
随机推荐
- 使用Photoshop实现雪花飘落的效果
			一.准备工作 软件环境:PhotoshopCS5 实验目的:雪花飘落的效果 二.实验步骤 1,打开素材图片并将原图层复制 2,在菜单栏内选择:滤镜->像素化->点状化,单元格大小选6 提 ... 
- 生成基于Maven的项目文档站点
			在Maven中,可以使用“mvn site”,为您的项目信息生成文档站点. mvn site 生成的网站是在项目的“target/site”文件夹中. mvn site 示例 请参见通过“mvn si ... 
- e826. 获得和设置JSplitPane分开的位置
			The location of a divider is measured in pixels from either the left edge (in the case of a horizont ... 
- Python——pyiso8601
			该模块不是Python内建的模块,为Python补充了 ISO 8601 解析——将常见的 ISO 8601 日期字符创转化为 Python 的 datetime 对象. 安装 $ pip insta ... 
- Remote SSH: Using JSCH with Expect4j
			Now-a-days, we can see that whole world is moving around Clouds and virtualization. More and more ap ... 
- int[,] 和 int[][] 有什么区别
			int[,] 是二维数组,它就是传统意义上 n x m 的表,和 C++ 里的 int[][] 是一个意思. int[][] 是交错数组,与 C++ 里的 int[][] 不同.它其实是一个 int[ ... 
- C# 随机获取国内IP
			调用getRandomIp()方法即可Framework3.5 +使用LINQ public string getRandomIp() { /* int[][] 这个叫交错数组,白话文就是数组的数组. ... 
- workerman定时器使用
			From: http://doc3.workerman.net/worker-development/add.html add int \Workerman\Lib\Timer::add(float ... 
- java mysql 链接高版本出现SSL验证
			key1: String url="jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8 ... 
- .net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录?
			.net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录? 使用VS2010开发应用程序完毕后,在发布应用程序时,常 ... 
