koan-performance
About
The koan-performance skill provides strategies for optimizing data-intensive applications at scale. It includes patterns for streaming large datasets, implementing efficient pagination, performing bulk operations, and choosing appropriate count strategies. Use this skill when building applications that need to handle large volumes of data while maintaining performance.
Documentation
Koan Performance
Core Principle
Optimize for scale from day one. Use streaming for large datasets, batch operations for bulk changes, fast counts for UI, and pagination for web APIs.
Performance Patterns
Streaming (Large Datasets)
// ❌ WRONG: Load everything into memory
var allTodos = await Todo.All(); // 1 million records!
// ✅ CORRECT: Stream in batches
await foreach (var todo in Todo.AllStream(batchSize: 1000))
{
await ProcessTodo(todo);
}
Count Strategies
// Fast count (metadata estimate - 1000x+ faster)
var fast = await Todo.Count.Fast(ct); // ~5ms for 10M rows
// Exact count (guaranteed accuracy)
var exact = await Todo.Count.Exact(ct); // ~25s for 10M rows
// Optimized (framework chooses)
var optimized = await Todo.Count; // Uses Fast if available
Use Fast for: Pagination UI, dashboards, estimates Use Exact for: Critical business logic, reports, inventory
Bulk Operations
// Bulk create
var todos = Enumerable.Range(1, 1000)
.Select(i => new Todo { Title = $"Task {i}" })
.ToList();
await todos.Save(); // Single operation
// Bulk removal
await Todo.RemoveAll(RemoveStrategy.Fast); // TRUNCATE/DROP (225x faster)
Batch Retrieval
// ❌ WRONG: N queries
foreach (var id in ids)
{
var todo = await Todo.Get(id);
}
// ✅ CORRECT: 1 query
var todos = await Todo.Get(ids);
Pagination
public async Task<IActionResult> GetTodos(
int page = 1,
int pageSize = 20,
CancellationToken ct = default)
{
var result = await Todo.QueryWithCount(
t => !t.Completed,
new DataQueryOptions { OrderBy = nameof(Todo.Created), Descending = true },
ct);
Response.Headers["X-Total-Count"] = result.TotalCount.ToString();
return Ok(result.Items);
}
Performance Benchmarks
| Operation | Inefficient | Efficient | Speedup |
|---|---|---|---|
| Bulk Remove (1M) | DELETE loop ~45s | TRUNCATE ~200ms | 225x |
| Count (10M) | Full scan ~25s | Metadata ~5ms | 5000x |
| Batch Get (100) | 100 queries | 1 query | 100x |
| Stream (1M) | Load all (OOM) | Stream batches | Memory safe |
When This Skill Applies
- ✅ Performance tuning
- ✅ Large datasets
- ✅ Optimization
- ✅ Production readiness
- ✅ Memory issues
- ✅ Query optimization
Reference Documentation
- Example Code:
.claude/skills/entity-first/examples/batch-operations.cs - Guide:
docs/guides/performance.md - Sample:
samples/S14.AdapterBench/(Performance benchmarks)
Quick Install
/plugin add https://github.com/sylin-org/koan-framework/tree/main/performanceCopy and paste this command in Claude Code to install this skill
GitHub 仓库
Related Skills
subagent-driven-development
DevelopmentThis skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
Git Commit Helper
MetaThis Claude Skill generates descriptive commit messages by analyzing git diffs. It automatically follows conventional commit format with proper types like feat, fix, and docs. Use it when you need help writing commit messages or reviewing staged changes in your repository.
algorithmic-art
MetaThis Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.
