Benchmarks for actix-service: focused around UnsafeCell usage #98
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Actix-service would benefit some white box benchmarks. For instance if I would want to look at what can be done with current implementation of a Cell, it would be easier to judge is there any affordable and safe solution.
This PR is adding basic performance testing facility for alternate implementations of a service, specifically one is using UnsafeCell vs RefCell implementation. Benchmarks repeating to avoid mistake of a first run.
Specifically AndThenService benchmark (bench/and_then.rs) compares 3 implementations:
Results are surprising and vary depending on OS/architecture:
Mac OS X i5 2.6GHz
Ubuntu 18 Xeon E5-2660 W2
It consistently shows that standard Future combinators are slower. Though RefCell seems similar or marginally slower which might be just mistake of measurement (1-2ns?).
Similar results for "primitive" cell service comparison (bench/unsafecell_vs_refcell.rs):
If there are any other ideas for implementation I would like to extend these benchmarks trying those ideas.