nmcd

nmcd Performance Benchmarks

Last Updated: 2026-01-07
Version: v0.1.0
Test Environment: AMD EPYC 7763 64-Core Processor (2 cores for benchmarks), Linux amd64

Executive Summary

This document contains baseline performance metrics for nmcd’s core operations. All benchmarks were run using Go’s built-in benchmarking framework with the race detector disabled for maximum performance measurement accuracy.

Key Findings:


Benchmark Results

Name Database Performance

Read Operations:

Write Operations:

UTXO Operations:

Blockchain Script Operations

RPC Performance


Running Benchmarks

# All benchmarks
go test -bench=. -benchmem ./...

# Specific package
go test -bench=. -benchmem ./namedb
go test -bench=. -benchmem ./chain
go test -bench=. -benchmem ./rpc

Performance Targets Met

See PLAN.md Phase 3 for complete performance targets and success criteria.


Relationship to PLAN.md (Phase 3)

The benchmarks in this document correspond to the Phase 3 performance goals described in PLAN.md. Use PLAN.md as the source of truth for:

This PERFORMANCE document focuses on measured behavior, optimization guidance, and operational recommendations, while PLAN.md focuses on roadmap and acceptance criteria.


The following profiles are intended as practical guidance for operators running nmcd in different environments. These are recommendations, not hard requirements.

Development / Local Testing

Expected behavior:

Small Production Node

Expected behavior:

Research / Heavy Analysis

Expected behavior:


Optimization Recommendations

This section summarizes actionable optimizations to improve nmcd performance while preserving correctness.

Name Database (bbolt) Tuning

RPC Layer

Concurrency and Parallelism


Troubleshooting Performance Issues

When nmcd appears slow or unresponsive, use the following checklist to localize the bottleneck.

1. Identify the Symptom

2. Basic Diagnostics

3. Common Causes and Remedies

Slow name writes (NAME_FIRSTUPDATE / NAME_UPDATE)

Slow name_list over large datasets

High CPU during script parsing or validation


Comparison with Alternative Implementations

nmcd is a lightweight, pure Go implementation of a Namecoin daemon that prioritizes simplicity and composability over absolute peak performance. When evaluating performance, consider the following qualitative comparisons:

The benchmark results in this document should be interpreted in light of these design goals. nmcd aims for predictable, reasonable performance on modern hardware, while keeping the codebase small and maintainable.


Future Work

Planned and potential performance improvements include:

Any such changes should be accompanied by updated benchmarks in this document and revised targets in PLAN.md.