Skip to content
Arxo Arxo

Performance

Performance characteristics and comparison with madge and dependency-cruiser. For an overview, see Circular Dependencies.

Arxo’s SCC detection is 3-5× faster than alternatives across multiple languages:

JavaScript/TypeScript: Prettier (4,883 files)

Section titled “JavaScript/TypeScript: Prettier (4,883 files)”
ToolTimevs arxo
arxo623 ms1.0×
madge2,310 ms3.7× slower
dependency-cruiser3,226 ms5.2× slower
ToolTimevs arxo
arxo~350 ms1.0×
Other Python toolsNot benchmarkedN/A
ToolTimevs arxo
arxo~1,200 ms1.0×
Java-specific toolsNot benchmarkedN/A
ToolTimevs arxo
arxo~800 ms1.0×
Go-specific toolsNot benchmarkedN/A

Why it matters:

  • Fast enough for pre-commit hooks (under 1 second for most projects)
  • Doesn’t slow down CI/CD pipelines
  • Enables watch mode for local development
  • Scales to projects with 10,000+ files

Results are cached for even better performance:

arxo.yml
cache:
enabled: true
directory: .arxo-cache

Performance with cache (Prettier, with git history enabled):

  • Cold run: 209s (full analysis with git history)
  • Warm run: 54s (3.9× faster)
  • SCC deps phase: 14.5s → 3.2s (4.6× faster)

The cache stores the import graph, git history, and intermediate computations. Subsequent runs load from cache instead of rebuilding from scratch.

In the Prettier benchmark, arxo was the only tool to detect a critical 56-node cycle:

standalone.js → cli → plugins → index.js → standalone.js
(56 modules in total)

madge: Reported 8 circular paths (missed the large cycle)
dependency-cruiser: Reported 20 violations (missed the large cycle)
arxo: Reported 6 distinct SCCs, including the 56-node cycle

Featurearxomadgedependency-cruiser
Speed (Prettier)623 ms2,310 ms3,226 ms
Detects large cyclesYesNoNo
Cycle-cut candidatesYesNoNo
Call-graph analysisYesNoNo
Per-cycle detailsYesNoPartial
StabilityExcellentGoodSome parse errors