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如何处理已检查异常?
在Java编程中,如何处理已检查异常? 此示例显示如何使用catch块处理已检查的异常. package com.yiibai; public class HandleCheckedException ...
- JDBC事务保存点(setSavepoint, releaseSavepoint )实例
以下是使用事务教程中描述的setSavepoint和回滚的代码示例. 此示例代码是基于前面章节中完成的环境和数据库设置编写的. 复制并将以下示例代码保存到:JDBCSavepoint.java 中,编 ...
- Android Jsoup 爬取网页数据
一不小心一个月又过去了,事实上近期还是小忙小忙的,废话不多说.直接进入今天的主题吧. Jsoup – Java HTML Parser, with best of DOM, CSS, and jque ...
- 【翻译自mos文章】Linux的/var/log/messages是空的(0k),messages.0, messages.1也是空的
Linux的/var/log/messages是空的(0k),messages.0, messages.1也是空的 来源于: The /var/log/messages is empty, and s ...
- Chrome Adobe Flash Player 因过期而 阻止
百度搜索重装不管用 作者:胡中元链接:https://www.zhihu.com/question/32223811/answer/60456561来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...
- Intellij修改模板代码
比如class的注释之类的,直接地址为 其中Include才是真正的内容
- 干货分享 超炫丽的HTML5/jQuery应用及代码
今天我们要来分享一些HTML5干货,对于前段开发者来说,这些HTML5应用和jQuery插件将会让你的项目更加生动和炫丽,至少在UI设计方面,或多或少会带给你一点设计灵感,赶紧收藏和分享吧.另外这些H ...
- 【转】IOS 学习之 NSPredicate 模糊、精确、查询
转自:http://blog.csdn.net/lianbaixue/article/details/10579117 简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于S ...
- Unity3d游戏开发中使用可空类型(Nullable Types)
你怎么确定一个Vector3,int,或float变量是否被分配了一个值?一个方便的方式就是使用可空类型! 有时变量携带重要信息,但仅仅有在特定的游戏事件发生时触发.比如:一个角色在你的游戏可能闲置, ...
- 【Intel AF 2.1 学习笔记二】AF中的页面——Panel
Panel Panel控件是你的app中的独立内容的区域控件.它是af UI的核心.Panel div 元素实际上承载了app中你管理和显示的界面元素和内容. 创建panel控件是相当地容易的:在id ...