Skip to content
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

Actix Fortunes; Explanation of results #4834

Closed
nbrady-techempower opened this issue Jun 5, 2019 · 4 comments

Comments

Projects
None yet
5 participants
@nbrady-techempower
Copy link
Member

commented Jun 5, 2019

Actix fortunes are performing miles ahead of the rest of the field. Check out these results.

@fafhrd91 I imagine that when we post official Round 18 results, there will be a lot of questions about how this was achieved. The framework was already near the top in previous results, but is now performing ~300% better. We suspect that a major contributing factor is a new release of the rust-postgres driver

We're probably going to bring attention to this in the blog post for Round 18. Would you be able to speak to some of the improvements you made?

@fafhrd91

This comment has been minimized.

Copy link
Contributor

commented Jun 6, 2019

sure

  • new async rust postgres driver. it is rust implementation of psql protocol
  • actix is single threaded, it runs in multiple threads but each thread is independent, so no synchronization is needed
  • fortunes template uses simd instructions for html escaping
  • actix uses generics extensively. compiler is able to use static dispatch for a lot of function calls
  • actix uses object pools for requests and responses
  • also it uses high performance hash map, based on google's swisstable
@bhauer

This comment has been minimized.

Copy link
Member

commented Jun 6, 2019

fortunes template uses simd instructions for html escaping

Nice. I am just guessing, but I suspect this is the first use of SIMD instructions in any test implementation.

@zloster

This comment has been minimized.

Copy link
Contributor

commented Jun 7, 2019

fortunes template uses simd instructions for html escaping

Nice. I am just guessing, but I suspect this is the first use of SIMD instructions in any test implementation.

The .Net stuff seems to utilize them a lot: CoreCLR (the runtime) and CoreFX (the standard library)

Edit: Also the Java JVM since the middle of Java 8 life cycle (at least). Some details here: https://stackoverflow.com/a/17142855 and the answers after.

@sebastienros

This comment has been minimized.

Copy link
Contributor

commented Jun 7, 2019

I am surprised you are not mentioning the usage of pipelining with Npgsql as this is what had the most impact AFAIK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.