<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance on Joe Bylund</title><link>http://jbylund.github.io/tags/performance/</link><description>Recent content in Performance on Joe Bylund</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Joe Bylund</copyright><lastBuildDate>Mon, 07 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://jbylund.github.io/tags/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>The ILIKE Trap: 40ms of Planning for 3ms of Work</title><link>http://jbylund.github.io/posts/00384_ilike-trap-postgres-planner/</link><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid>http://jbylund.github.io/posts/00384_ilike-trap-postgres-planner/</guid><description>ILIKE on a trigram-indexed column was spending ~40ms in the query planner for every ~3ms of execution. The fix was two lines of SQL and one line of Python — but finding it required understanding what the planner actually does with ILIKE.</description></item><item><title>Mana Symbol Rendering: Regex + Map for 47× Speedup</title><link>http://jbylund.github.io/posts/00352_mana-symbol-rendering-regex/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>http://jbylund.github.io/posts/00352_mana-symbol-rendering-regex/</guid><description>Replacing a per-symbol replaceAll loop with a single regex pass and a Map lookup cut mana symbol conversion time by 47×. The mechanism, the benchmark, and a gotcha with stateful regex.</description></item><item><title>22 Indexes on One Table: How Card Search Uses Every Index Type PostgreSQL Has</title><link>http://jbylund.github.io/posts/00224_postgres-index-strategies/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>http://jbylund.github.io/posts/00224_postgres-index-strategies/</guid><description>The magic.cards table carries indexes of every type PostgreSQL offers. A tour of trigram GIN for substring search, GIN for JSONB containment, B-tree for numerics, hash for exact-match fields, and an expression index that unlocks a color identity query that otherwise requires a full table scan.</description></item><item><title>PostgreSQL COPY Loading: Faster Bulk Import</title><link>http://jbylund.github.io/posts/00160_postgres-copy-loading/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>http://jbylund.github.io/posts/00160_postgres-copy-loading/</guid><description>Switching from row-by-row inserts to PostgreSQL&amp;rsquo;s COPY protocol meaningfully cut import time. Why COPY is fast, how to stream data into it from Python, and two approaches to expanding a JSON blob into a typed row.</description></item><item><title>13× the Throughput of FastAPI: Why I Use Falcon + Bjoern</title><link>http://jbylund.github.io/posts/00064_falcon-bjoern-web-framework/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>http://jbylund.github.io/posts/00064_falcon-bjoern-web-framework/</guid><description>Why Sylvan Librarian uses Falcon and Bjoern instead of the FastAPI + uvicorn default: a preference for explicit, close-to-vanilla Python over framework magic.</description></item></channel></rss>