WhosKPW3 - xilp/muapub GitHub Wiki

当前排行

  1. 不支持服务重启的TPS排行

    • 高鹏 14413 Go
    • 大坤哥 14066 Go
    • 曹司机 13944 C+Libevent (可能有BUG)
    • 曹司机 13764 C+LibMicroHttpd (可能有BUG)
    • 邵真语 13310 Go
    • 阿健 8846 Node.js
    • 刘聪 6439 Node.js
    • 刘聪 2098 Python
    • 刘聪 1299 Python+Gevent
  2. 支持服务重启的TPS排行

    • 高鹏 14413 Go
    • 大坤哥 13946 Go
    • 邵真语 8876 Go+Redis

接口规格

接口方法1: 请求:

http://host/set?key=<key>&value=<value>
(body为空)

期望返回(body):

OK

接口方法2: 请求:

http://host/get?key=<key>
(body为空)

期望返回(body)

value=<value>

其中key和value为不包含空格、等号的字符串,长度为1-257字节随机分布

规则

  1. MUA全公司含实习生有参与权
  2. 奖品为KPW3一台
  3. 性能测试最高者获胜:服务支持重启、不支持重启的两种情况,最高TPS的得一分,两分不是同一个人获得的情况,再出一题决胜
  4. 各人测试程序互测得出TPS,如果各人测试程序结果排名不一样,以LiuCong的测试程序为准
  5. 读写比例1:1
  6. 不限框架、第三方库、开发语言,但支持服务重启的测试里,第三方模块/服务需要同时重启
  7. 期限:由LiuCong裁定

样例(python, node.js)

# run: python kpw3.py

from wsgiref.simple_server import make_server
from urllib2 import urlparse

data = {}

def serve(env, start_response):
	path = env['PATH_INFO']
	args = urlparse.parse_qs(env['QUERY_STRING'])
	key = args['key'][0]

	start_response('200 OK', [('Content-type', 'text/plain')])

	if path == '/get':
		return data[key]
	if path == '/set':
		value = args['value'][0]
		data[key] = value
		return ['ok']
	return ['unknown error']

make_server('', 8000, serve).serve_forever()
// run: node kpw3.js
var http = require('http')
var urlp = require("url");
var qs = require('querystring');

var data = {}

var server = http.createServer(function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'});
	var url = urlp.parse(request.url);
	var query = qs.parse(url.query);
	if (url.pathname == '/get') {
		response.end('value=' + data[query['key']]);
	} else if (url.pathname == '/set') {
		data[query['key']] = query['value'];
		response.end('ok');
	}
});

server.listen(8000);
# 写测试
curl 'localhost:8000/set?key=abc&value=444'
# 读测试
curl 'localhost:8000/get?key=abc'
⚠️ **GitHub.com Fallback** ⚠️