Make slow code fast with evidence — measure first, find the actual bottleneck, fix it, measure again. Covers algorithmic complexity, N+1 and I/O batching, caching, memory leaks, frontend rendering. Use for "тормозит", "медленно работает", latency and memory issues.
Scanned 10/3/2026
npx -y skills add ivanvp91/TRCode --skill performance-optimization --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Performance Optimization?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ivanvp91-performance-optimization)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: performance-optimization
description: Make slow code fast with evidence — measure first, find the actual bottleneck, fix it, measure again. Covers algorithmic complexity, N+1 and I/O batching, caching, memory leaks, frontend rendering. Use for "тормозит", "медленно работает", latency and memory issues.
description_ru: Ускорить медленный код доказательно — сначала измерить, найти реальное узкое место, исправить, измерить снова. Алгоритмическая сложность, N+1 и батчинг I/O, кэширование, утечки памяти, рендеринг фронтенда. Для «тормозит», «медленно работает», проблем с latency и памятью.
triggers: производительность, performance, оптимизация, оптимизируй, оптимизировать, тормозит, медленно работает, медленный, зависает, профилирование, profiling, профайлер, bottleneck, узкое место, утечка памяти, memory leak, latency, задержка, fps, лагает, долго грузится, ускорить
---
# Performance optimization
## 1. Measure before touching anything
"Кажется медленным" is not a diagnosis. First establish: what operation, how slow (number), how fast it must be (target), and under what load. Then profile or instrument — language profiler, `EXPLAIN` for queries, browser Performance tab for frontend, or at minimum timing brackets around suspect stages. The bottleneck is where the time IS, not where it looks ugly; profiles regularly contradict intuition. No optimization ships without a before-number.
## 2. Fix in order of leverage
Work down; each level routinely beats everything below it combined:
1. **Don't do the work**: cache the result, compute lazily, exit early, dedupe repeated calls, move it off the hot path (async/background/startup).
2. **Do less work**: better algorithm or data structure — O(n²) loops over growing data, linear scans where a map/set/index belongs, sorting inside loops. One complexity-class fix beats a thousand micro-optimizations.
3. **Batch the I/O**: N+1 queries → one query with join/`IN`; per-item HTTP calls → bulk endpoint; per-row writes → transaction/bulk insert; file reads in loops → read once.
4. **Tune the platform**: DB indexes for the actual query shapes, connection pooling, compression, HTTP caching headers, worker/thread counts.
5. **Micro-optimize** — only with a profile proving the hot loop, and only after 1–4.
## 3. The usual suspects by domain
- **Backend**: N+1 (ORM lazy loads), missing indexes (check `EXPLAIN` for full scans), synchronous calls that could parallelize, serializing giant payloads nobody reads.
- **Frontend**: bundle size (code-split, lazy-load routes/images), rendering the invisible (virtualize long lists), layout thrash (batch DOM reads/writes), re-render storms (memoize, stabilize deps), unoptimized images as the top LCP killer.
- **Memory**: growth without release — listeners never removed, caches without eviction, closures pinning big objects; take two heap snapshots apart in time and diff.
- **Trading/EA code**: recomputing indicators every tick instead of on new bar, object creation in `OnTick`, unbounded history arrays.
## 4. Prove it and stop
After the fix: same measurement, same conditions, report before → after with the numbers. State the cost of the fix (memory for the cache, staleness for memoization, complexity for the reader). Stop at the target: past it, further optimization is trade of readability for nothing — say the target is met and end.
## What not to do
- No speculative optimization of code nobody measured; no rewriting working code "для скорости" as a side quest.
- No cache without an invalidation story — a stale-data bug costs more than the milliseconds saved.
- No benchmark theater: measuring debug builds, cold caches vs warm, or a single run instead of several.
- Don't sacrifice correctness for speed silently; if a fix changes semantics (eventual consistency, approximation), the user decides.
## Answer format
1. The measurement: what was profiled, the bottleneck with its share of time.
2. The fix and its leverage level (why this beats alternatives).
3. Before → after numbers, same conditions.
4. Costs/trade-offs of the fix, and what's the next bottleneck if more speed is ever needed.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!