Skip to content
OpenSmartRoute
Skillv1.0.0

go-performance

Use when writing, reviewing, or optimizing Go code for performance. Covers string operations, memory allocation, preallocating slices and maps, strings.Builder, strconv, container-aware GOMAXPROCS, an

by saisudhir14(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from saisudhir14/claude-skills (skills/go-performance/SKILL.md). Install upstream with npx skills add saisudhir14/claude-skills --skill go-performance. Copyright stays with the author (MIT).

Go Performance

Performance optimization patterns for production Go.

Prefer strconv Over fmt

strconv is faster for primitive conversions.

// Slower
s := fmt.Sprintf("%d", n)

// Faster
s := strconv.Itoa(n)

Avoid Repeated String to Byte Conversions

// Wrong: converts on every iteration
for i := 0; i < n; i++ {
    w.Write([]byte("hello"))
}

// Correct
data := []byte("hello")
for i := 0; i < n; i++ {
    w.Write(data)
}

Specify Map Capacity

// Wrong
m := make(map[string]int)

// Correct when size is known
m := make(map[string]int, len(items))

Preallocate Slice Capacity

// Wrong
var result []Item
for _, v := range input {
    result = append(result, transform(v))
}

// Correct
result := make([]Item, 0, len(input))
for _, v := range input {
    result = append(result, transform(v))
}

Use strings.Builder for Concatenation

// Wrong: creates many allocations
var s string
for _, part := range parts {
    s += part
}

// Correct
var b strings.Builder
b.Grow(totalLen) // optional: preallocate
for _, part := range parts {
    b.WriteString(part)
}
s := b.String()

Container-Aware GOMAXPROCS (Go 1.25+)

Go 1.25 automatically adjusts GOMAXPROCS based on container CPU limits.

// On Linux with cgroups, GOMAXPROCS now considers:
// - CPU bandwidth limits (CPU limit in Kubernetes)
// - Changes dynamically if limits change

// Automatic behavior is disabled if you set GOMAXPROCS explicitly:
// - Via GOMAXPROCS environment variable
// - Via runtime.GOMAXPROCS() call

This means Go programs in containers perform better out-of-the-box without manual GOMAXPROCS tuning.

Resource Management (Go 1.24+)

runtime.AddCleanup

Prefer runtime.AddCleanup over runtime.SetFinalizer for cleanup operations.

func NewResource() *Resource {
    r := &Resource{handle: allocHandle()}
    runtime.AddCleanup(r, func(handle uintptr) {
        freeHandle(handle)
    }, r.handle)
    return r
}

Advantages over SetFinalizer:

  • Multiple cleanups per object
  • Works with interior pointers
  • No cycle-related leaks
  • Object freed promptly (single GC cycle)

Weak Pointers (Go 1.24+)

The weak package provides weak references that don't prevent garbage collection.

import "weak"

type Cache struct {
    mu    sync.Mutex
    items map[string]weak.Pointer[ExpensiveResource]
}

func (c *Cache) Get(key string) *ExpensiveResource {
    c.mu.Lock()
    defer c.mu.Unlock()
    if wp, ok := c.items[key]; ok {
        if r := wp.Value(); r != nil {
            return r
        }
        delete(c.items, key)
    }
    return nil
}

Use cases: caches, canonicalization maps, observer patterns.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/saisudhir14-claude-skills-go-performance/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

saisudhir14-claude-skills-go-performance.ocm.jsonjson
{
  "ocm": "1",
  "id": "saisudhir14-claude-skills-go-performance",
  "kind": "skill",
  "name": "go-performance",
  "description": "Use when writing, reviewing, or optimizing Go code for performance. Covers string operations, memory allocation, preallocating slices and maps, strings.Builder, strconv, container-aware GOMAXPROCS, and runtime considerations for Go 1.25.",
  "publisher": "saisudhir14",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "golang",
      "go",
      "performance",
      "optimization",
      "memory",
      "allocation",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Use when writing, reviewing, or optimizing Go code for performance. Covers string operations, memory allocation, preallocating slices and maps, strings.Builder, strconv, container-aware GOMAXPROCS, and runtime considerations for Go 1.25."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/saisudhir14/claude-skills",
      "path": "skills/go-performance/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/saisudhir14/claude-skills/blob/HEAD/skills/go-performance/SKILL.md",
      "key": "saisudhir14/claude-skills/skills/go-performance/SKILL.md"
    },
    "license": "MIT"
  },
  "instructions": "# Go Performance\n\nPerformance optimization patterns for production Go.\n\n## Prefer strconv Over fmt\n\n`strconv` is faster for primitive conversions.\n\n```go\n// Slower\ns := fmt.Sprintf(\"%d\", n)\n\n// Faster\ns := strconv.Itoa(n)\n```\n\n## Avoid Repeated String to Byte Conversions\n\n```go\n// Wrong: converts on every iteration\nfor i := 0; i < n; i++ {\n    w.Write([]byte(\"hello\"))\n}\n\n// Correct\ndata := []byte(\"hello\")\nfor i := 0; i < n; i++ {\n    w.Write(data)\n}\n```\n\n## Specify Map Capacity\n\n```go\n// Wrong\nm := make(map[string]int)\n\n// Correct when size is known\nm := make(map[string]int, len(items))\n```\n\n#",
  "cost": {
    "context_tokens": 678
  }
}

Fetch it by URL: GET /api/v1/registry/saisudhir14-claude-skills-go-performance/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.

go-performance - Skill - OpenSmartRoute