-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] plaintext benchmark #9
base: master
Are you sure you want to change the base?
Conversation
jangko
commented
Aug 22, 2018
•
edited
Loading
edited
- finishing bench bot implementation
- add participant: rust actix
- add participant: go-lang fasthttp
- add participant: c libreactor
- polishing benchmark report
- completing thread/nothread stuff
- rewrite response section code
- add nodocker script
I'm sorry @jangko, there no reason to make benchmarks on multi-threaded vs single-threaded apps. Could you please try to limit number of processes/threads used by chosen framework? |
sure, i will try to make the benchmark as fair as possible for each participant |
From my tests on VM with just only 2 processors available,
|
While on the same VM asyncdispatch2 benchmark produces such output:
As you can see here, there no |
mofuw need The performance difference between your benchmark and mine is because I use pipeline switch turn on. |
@jangko, from what i see |
Most of performant techempower benchmark participant are designed to handle pipeline messages. On the other hand, this benchmark does not take it into account. |
But you can adjust benchmark source to support pipeline for both |
agree |
ad2 is fast but then suffer massive slowdown, hmm. interesting |
.travis.yml
Outdated
@@ -37,3 +37,5 @@ install: | |||
script: | |||
- nimble install -y | |||
- nimble test | |||
- nimble benchmark |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what's the purpose of running benchmark on CI setup? neither travis nor appveyor provide stable hardware so numbers will be meaningless, and benchmarks tend to take a while so it will slow down every PR / build roundtrip..
That's right, it took significant amount of time. I already removed it from CI. Summary
Conclusion
Sorry I cannot work faster because of some circumstances, but I think this one is ready for review. |
looks like wrk is going crazy in that way:
|
The test programs are supposed to check for the 'USE_THREADS' environment variable to decide wether threads should be used. So far, this has been implemented in the Go and Rust benchmarks. The bot will set this variable by default. Other changes: * The Rust implementation has been updated with the latest code from the TechEmperor benchmark and the incremental Docker build process has been greatly improved
@jangko, I've pushed to your branch a commit adding a command-line option for deciding whether threads should be used. To support it, the test programs need a minor modification - they must check whether the environment variable 4fa3b6e#diff-a700604e55a2b00d28959045bdda5b09R26 I've added this to the Rust and Go programs, but can we also add it to the rest of the examples? The asyncdispatch2 program that you've prepared is violating the rules of the competition, which are given here: In particular, this rule:
So, you must break up a bit the strings being written as a response. I think you can avoid some of the allocations and concatenations as well, @cheatfate may provide some hints for what is the most efficient way to build the response piece by piece. |
Add tests for status-im#9. Temporary disable some tests in testaddress.nim.