by Oliver
    8. November 2017 09:00
  
  
  This is a digitalized version of my session notes from the conference.
 Key Questions
  - How fast is it?  
- How fast could it be?  
- How fast should it be?
Always measure your gains – which implies you need to measure your current performance.
 Allocations Cost – Sometimes A Lot
 Here's an example from Hyperion (fork of Wire):
 original code – allocates a new byte array on every call
 
 optimized code – reuses a byte array from a pool
 
 What are the gains of this small change?
 
 Optimizations like this one pay off especially in low-level code or inside of libraries that will be consumed by third parties. As always – first measure, then optimize.
 Tools for the performance minded
  - BenchmarkDotNet: a .NET benchmarking framework  
- marten: async document database and/or event store  
- Hyperion: a high performance polymorphic serializer for the .NET framework, built for Akka.NET  
- Jil: Fast .NET JSON (De)Serializer, Built On Sigil  
- protobuf-net: Protocol Buffers library for idiomatic .NET  
- Microsoft Bond: cross-platform framework for cross-language de/serialization with powerful generic mechanisms (this is not your go-to tool when you just want to de/serialize some data quickly ;-) - it's a whole framework)
Have fun and stay focused!