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
NateBrady23 opened this issue Jun 5, 2019 · 4 comments
Closed

Actix Fortunes; Explanation of results #4834

NateBrady23 opened this issue Jun 5, 2019 · 4 comments

Comments

@NateBrady23
Copy link
Member

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
Copy link
Contributor

fafhrd91 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
Copy link
Contributor

bhauer 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
Copy link
Contributor

zloster 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
Copy link
Contributor

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
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants