<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Performance on Neputer Blog</title><link>https://blog.neputer.com/tags/performance/</link><description>Recent content in Performance on Neputer Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 02 Aug 2026 15:41:29 +0545</lastBuildDate><atom:link href="https://blog.neputer.com/tags/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>Rust in Production: Lessons After Two Years</title><link>https://blog.neputer.com/posts/rust-in-production/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>https://blog.neputer.com/posts/rust-in-production/</guid><description>&lt;p&gt;Two years ago we rewrote a Go microservice in Rust. Here&amp;rsquo;s what we learned—the good, the ugly, and the surprising.&lt;/p&gt;
&lt;h2 id="the-numbers"&gt;The Numbers&lt;/h2&gt;
&lt;p&gt;Before we get into opinions, here are the cold hard metrics comparing the Go (1.21) and Rust (1.78) versions processing 10M API requests:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Go&lt;/th&gt;
&lt;th&gt;Rust&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;P99 latency&lt;/td&gt;
&lt;td&gt;340ms&lt;/td&gt;
&lt;td&gt;28ms&lt;/td&gt;
&lt;td&gt;-92%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory (steady state)&lt;/td&gt;
&lt;td&gt;2.1 GB&lt;/td&gt;
&lt;td&gt;48 MB&lt;/td&gt;
&lt;td&gt;-98%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU (avg)&lt;/td&gt;
&lt;td&gt;4.2 cores&lt;/td&gt;
&lt;td&gt;0.8 cores&lt;/td&gt;
&lt;td&gt;-81%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Binary size&lt;/td&gt;
&lt;td&gt;12 MB&lt;/td&gt;
&lt;td&gt;4.8 MB&lt;/td&gt;
&lt;td&gt;-60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines of code&lt;/td&gt;
&lt;td&gt;4,200&lt;/td&gt;
&lt;td&gt;5,800&lt;/td&gt;
&lt;td&gt;+38%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The latency drop isn&amp;rsquo;t just about Rust being faster—it&amp;rsquo;s about tail latency predictability. Go&amp;rsquo;s GC pauses, while short, created sporadic spikes that triggered downstream timeouts.&lt;/p&gt;</description></item></channel></rss>