evaluate and use fasthttp
missedone opened this issue · 8 comments
i saw this https://github.com/rakyll/boom/issues/94, we probably can evaluate it and use it if it really promise.
Sounds great. Assigned the issue to you if you want to give it a shot.
HTTP performance have been quite good so far, on my laptop (OS X) I usually run out of file handles before the CPU usage goes above 100% on a single core. But having less CPU usage due to HTTP implementation overhead sounds good.
Regarding memory use, I've seen pretty consistent behaviour where Gotling uses about 8 kb (each goroutine) x number of concurrent "users".
sure, will have a try later
i just pushed the initial implementation with fasthttp on feature/fasthttp
branch.
for now, only GET is supported, i did a quick test, and found that there is performance degradation with fasthttp compared to stdlib net/http.
will dig deeper later to understand why.
below is an example, you can uncomment the client: fasthttp
line to use fasthttp, by default it's using net/http:
---
iterations: 10
users: 10
rampup: 10
actions:
- http:
title: Ping Google
method: GET
# client: fasthttp
url: https://www.google.com
Thanks, awesome work. Did you get the performance issue sorted out?
nope, even i use the lock-free approach for creating request/response object in commit: da3a8d5
i guess there still other lock/sync operation in fasthttp internal, will see.
i'd like to pend this since still fasthttp not perform as fast as net/http.
Ok, good work nevertheless.
Interesting work! :-) I wonder if sharing a single fasthttp client across multiple go-routines would help.