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

Add some benchmarks comparing akka-kryo-serialization with other serialization approaches available on Akka #71

Open
romix opened this issue Jan 15, 2016 · 9 comments

Comments

@romix
Copy link
Collaborator

romix commented Jan 15, 2016

It would be nice to have some benchmarks demonstrating that akka-kryo-serialization is much faster than the standard serialization provided by Akka.

@romix
Copy link
Collaborator Author

romix commented Jan 15, 2016

@luben @briantopping Hi guys! If your or other users of this library could contribute some benchmarks demonstrating the advantages of using it, it would be really nice of you!

@luben
Copy link
Contributor

luben commented Jan 15, 2016

yes, I will look how to add a config with Java serialization (which is the default for akka) in our performance tests)

@luben
Copy link
Contributor

luben commented Jan 15, 2016

PR: #72

@romix
Copy link
Collaborator Author

romix commented Jan 15, 2016

@luben Thanks a lot!

Could we have a benchmark that starts a set of Akka actors locally and let's them communicate (e.g. 100000 messages or something like that)? The current perf test just measures the raw serialization/deserialization performance. But the question is if the speedup is as impressive when we use it in a real-world scenario where we also have other overheads due to networking, multi-threading, etc.

@luben
Copy link
Contributor

luben commented Jan 16, 2016

It will depend a lot on the type of messages exchanged and will vary with the workload I guess. Adapting one of the stress tests from the actor test suite should be possible with a little work. I have not looked in the details how to do it but purely local actors do not serialize the messages - we should use the multi-node testkit to spin multiple JVMs.

@luben
Copy link
Contributor

luben commented Jan 16, 2016

hm, we can force it to always serialize the messages

@romix
Copy link
Collaborator Author

romix commented Jan 16, 2016

Yes, we could force to always serialize the messages, but I'm not sure if the result will be realistic enough. I'd really like to see something that would go through the OS networking stack, etc.

Basically, the aim is to show that the overall overhead of the serialization in the real-world scenarios is significant and our library is able to significantly reduce it (it may be both in terms of performance and/or amount of data transmitted).

The tests could try to exchange messages of different sizes and structure to show how the performance is changing depending on the size and structure of the message.

I agree that adapting the stress tests from the actor test suite could be a good idea and save a lot of work.

@nvollmar
Copy link
Member

Do we still want to invest time in this?

@danischroeter
Copy link
Member

Since performance really does matter this would be worth a bit of time. But I'm more thinking about performing a manual set of tests once or once per release...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants