perf: use picoev as default Server for improve response concurrency
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
// Keep-Alive HTTP 基准测试
|
||||
module main
|
||||
|
||||
import net
|
||||
import time
|
||||
|
||||
fn main() {
|
||||
addr := '127.0.0.1:9999'
|
||||
requests := 10000
|
||||
|
||||
println('=== Keep-Alive HTTP 基准测试 ===')
|
||||
println('目标: ${addr}')
|
||||
println('请求数: ${requests}')
|
||||
println('')
|
||||
|
||||
// 建立连接
|
||||
mut conn := net.dial_tcp(addr) or {
|
||||
println('连接失败: ${err}')
|
||||
return
|
||||
}
|
||||
defer { conn.close() or {} }
|
||||
|
||||
// 预热
|
||||
println('预热中...')
|
||||
for _ in 0 .. 100 {
|
||||
send_keepalive_request(mut conn, addr) or {
|
||||
// 重连
|
||||
conn = net.dial_tcp(addr) or { continue }
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// 正式测试
|
||||
println('开始测试...')
|
||||
sw := time.new_stopwatch()
|
||||
mut success := 0
|
||||
|
||||
for _ in 0 .. requests {
|
||||
send_keepalive_request(mut conn, addr) or {
|
||||
// 重连
|
||||
conn = net.dial_tcp(addr) or { continue }
|
||||
continue
|
||||
}
|
||||
success++
|
||||
}
|
||||
|
||||
elapsed := sw.elapsed()
|
||||
elapsed_ms := f64(elapsed.milliseconds())
|
||||
rps := f64(success) * 1000.0 / elapsed_ms
|
||||
avg_us := elapsed_ms * 1000.0 / f64(success)
|
||||
|
||||
println('')
|
||||
println('=== 结果 ===')
|
||||
println('成功请求: ${success}/${requests}')
|
||||
println('总耗时: ${elapsed_ms:.0f}ms')
|
||||
println('吞吐量: ${rps:.0f} req/s')
|
||||
println('平均延迟: ${avg_us:.2f}μs')
|
||||
}
|
||||
|
||||
fn send_keepalive_request(mut conn net.TcpConn, addr string) ! {
|
||||
// 发送 HTTP 请求 (Keep-Alive)
|
||||
request := 'GET /api/health HTTP/1.1\r\nHost: ${addr}\r\nConnection: keep-alive\r\n\r\n'
|
||||
conn.write_string(request)!
|
||||
|
||||
// 读取响应头和体
|
||||
mut buf := []u8{len: 256}
|
||||
conn.read(mut buf) or {}
|
||||
}
|
||||
Reference in New Issue
Block a user