Chapter 48: Performance Tuning in C#

io_uring, SIMD JSON, buffer pooling. In this chapter, you will learn performance tuning in depth with C# code examples, explanations, and best practices.

Overview

This chapter covers performance tuning for Kungfu.js developers using C#. We will start with the basics, move through practical examples, and end with advanced techniques and common pitfalls.

Why This Matters

Understanding performance tuning is essential because it is a core part of building web applications. Every real-world app needs to handle io_uring, simd json, buffer pooling. Skipping this chapter would leave a gap in your knowledge that would cause problems later.

Code Example

Here is how to handle this in C#:

# Build with maximum performance
cargo build --release --features "kungfu-core/io_uring kungfu-core/simd"

# Production settings
# - Set acceptor_threads to CPU core count
# - Enable io_uring (Linux 5.1+)
# - Enable SIMD JSON (x86_64 with AVX2)
# - Use buffer pooling
# - Enable TCP_NODELAY
# - Increase file descriptors: ulimit -n 1048576

Performance Features

  • io_uring: Zero-copy I/O on Linux 5.1+. Reduces syscalls by 10-20x.
  • SIMD JSON: Uses CPU vector instructions for JSON parsing. 2-4x faster on x86_64.
  • Buffer pooling: Reuses memory buffers instead of allocating new ones per request.
  • SO_REUSEPORT: Multiple acceptor threads share the same port. Kernel load-balances connections.
  • TCP_NODELAY: Disables Nagle's algorithm for lower latency on small responses.

Common Mistakes

  • Not reading the documentation: Always check the API reference when something does not work as expected.
  • Skipping security: Never disable the default middleware unless you have a very good reason. Security is not optional.
  • Not testing: Write tests for your handlers. Kungfu.js makes this easy with the built-in test utilities.

Summary

In this chapter, you learned about performance tuning in C#. You saw code examples, understood how things work under the hood, and learned about common mistakes to avoid.

What is Next?

In chapter 49, we will cover Deployment: Docker, systemd, Vercel, production checklist.