askill
optimizing-performance

optimizing-performanceSafety 95Repository

Measure-first performance optimization that balances gains against complexity. Use when addressing slow code, profiling issues, or evaluating optimization trade-offs.

81 stars
1.6k downloads
Updated 2/7/2026

Package Files

Loading files...
SKILL.md

Optimizing Performance

Core principle: Readable code that's "fast enough" beats complex code that's "optimal". Measure first.

The Golden Rule

IF optimization reduces complexity AND improves performance → ALWAYS DO IT
IF optimization increases complexity → Only if 10x faster OR fixes critical UX (>16ms UI, >100ms input)

Four-Phase Process

- [ ] Phase 1: Measure baseline (time/renders/memory/KB)
- [ ] Phase 2: Identify root cause (algorithm/I/O/payload)
- [ ] Phase 3: Evaluate cost vs benefit
- [ ] Phase 4: Implement & verify improvement

Phase 1: Measure First (REQUIRED)

Never optimize without data.

MetricWhat to CountTools
Timems per operationperformance.now(), profilers
Re-rendersComponent render countReact DevTools Profiler
MemoryMB allocatedDevTools Memory tab
NetworkRequest count, KBNetwork tab, bundle analyzer
DatabaseQuery count, rows scannedEXPLAIN plans

Phase 2: Identify Root Cause

IssueIndicatorsFix Direction
O(n²) complexityNested loops, .includes() in loopUse Set/Map
Unnecessary workRe-computing same resultCache/memoize
I/O bottleneckN+1 queries, sequential APIsBatch, use joins
Large datasetsRendering 1000+ itemsVirtualization
Payload size>500KB bundlesTree-shake, lazy load

Phase 3: Evaluate Cost vs Benefit

  1. Reduces complexity? → Always do it
  2. Increases complexity? → Only if 10x faster OR fixes critical UX
  3. Otherwise → Don't do it

Phase 4: Implement & Verify

  1. Make minimal changes targeting bottleneck
  2. Re-run benchmark
  3. Verify tests pass

Win-Win Optimizations (Always Do)

Multiple loops → Single loop:

// ❌ Three passes
const ids = users.map(u => u.id);
const active = users.filter(u => u.active);

// ✅ One pass
const { ids, active } = users.reduce((acc, u) => {
  acc.ids.push(u.id);
  if (u.active) acc.active.push(u);
  return acc;
}, { ids: [], active: [] });

Nested loops → Hash map (O(n²) → O(n)):

// ❌ O(n²)
const matched = orders.filter(o => users.some(u => u.id === o.userId));

// ✅ O(n)
const userIds = new Set(users.map(u => u.id));
const matched = orders.filter(o => userIds.has(o.userId));

High-Value Optimizations

PatternWhenFix
VirtualizationLists >1000 itemsreact-window, tanstack-virtual
Memoization>5ms calc OR unnecessary re-rendersuseMemo, React.memo
BatchingMultiple state updatesSingle setState, bulk INSERT
Lazy loadingLarge dependenciesimport('./heavy-lib')

Red Flags

  • Optimizing without benchmark data
  • Micro-optimizing <16ms code
  • Adding complexity for minimal gain
  • Optimizing infrequently-run code

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

87/100Analyzed 2/20/2026

High-quality performance optimization skill with clear methodology, practical code examples, and sensible trade-off guidelines. Strong actionability with four-phase process and decision criteria. Somewhat internal path but content is broadly applicable. Minor deduction for internal-only path location.

95
90
88
82
92

Metadata

Licenseunknown
Version-
Updated2/7/2026
Publisherrileyhilliard

Tags

databaseobservability