docs / benchmarks

Benchmarks index
  1. Overview
  1. Exemptions
  2. Methodology

aot

  1. Overview
  2. Components

codec

  1. Overview
  2. Base32
  3. Base64
  4. Deflate (dev.cajeta.codec)

codec / csv

  1. CSV

codec / json

  1. JSON

collection

  1. Overview
  2. ArrayList
  3. BPlusTree
  4. Cache
  5. Collectors
  6. HashMap
  7. HashSet
  8. Heap
  9. ImmutableList
  10. ImmutableMap
  11. ImmutableSet
  12. LinkedList
  13. RedBlackTree
  14. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. Overview
  2. AtomicInt32
  3. AtomicInt64
  4. Channel
  5. Fiber
  6. FiberLocal
  7. Lock
  8. Mutex
  9. RwLock
  10. Semaphore
  11. Tasks

gfx

  1. Overview
  2. Texture2D

hash

  1. Overview
  2. DefaultHasher
  3. Hash
  4. SipHash
  5. XXHash3

http

  1. Overview
  2. Client
  3. Server
  4. Server-sent events
  5. Start-up and footprint
  6. TLS
  7. WebSocket

io

  1. Overview
  2. Buffer

io / file

  1. Directory walk
  2. File
  3. FileInfo
  4. FileReader
  5. FileWriter
  6. Path
  7. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. Server
  4. TcpListener
  5. TcpStream
  6. UdpSocket

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Overview
  2. Allocation and ownership
  3. Calls and dispatch
  4. Exceptions
  5. Guid
  6. Loops
  7. Math and SIMD
  8. Optional
  9. Pair
  10. Slice
  11. String
  12. StringBuilder
  13. Whole programs: the Benchmarks Game

lang / stream

  1. ArrayStream
  2. Stream

llm

  1. Overview
  2. Decode
  3. Kernel parity
  4. Load and first token
  5. Long context
  6. Memory
  7. Prefill

math

  1. Overview
  2. Ray
  3. Rotation
  4. Tensor
  5. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

ml

  1. Overview
  2. Classical models
  3. Neural models
  4. XGBoost

nucleo

  1. Overview
  2. Column
  3. Fuse
  4. Table
  5. Tape
  6. Transforms

primavera

  1. Overview
  2. Build time
  3. Dependency injection at scale
  4. REST endpoint
  5. Start-up and footprint
  6. Templated page

process

  1. Overview
  2. Command
  3. Process

reflect

  1. Overview
  2. Class

search

  1. Overview

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

time

  1. Overview
  2. Clock
  3. DateTimeFormatter
  4. Duration
  5. Instant
  6. LocalDate
  7. LocalDateTime
  8. LocalTime
  9. ZonedDateTime

toolchain

  1. Overview
  2. Binary size
  3. Build tool
  4. Compile time
  5. Debugger
  6. Notebook kernel start-up
  7. Start-up

toolchain / kernel-startup

  1. Overview
  2. Where cold-start time goes

wire

  1. Overview
  2. CompressStream
  3. Encoder
  4. SchemaEncoder

xpu

  1. Overview
  2. Device
  3. KernelBuffer
  4. KernelStream
  5. KernelTimer

xpu / mesh

  1. MeshSimplifier
Machine
no runs yet

Benchmarks

How Cajeta performs, measured against the languages it competes with and the systems its libraries take on, laid out the way the stdlib reference is: one page per package, one page per class or capability that can be measured. Each page says what is measured, against what, how it is checked, and shows the chart of the last published run for the machine selected at the top of the page.

Status. The catalog, the harness and the competitor programs are in place; the first published run waits for a quiet box. Until then every chart says “not yet measured” and no page carries a standing. The numbers will arrive as one commit of CSV files per machine.

How to read a page

Every page has the same six sections: what is measured and why that workload; the benchmarks table (id, workload and size, what it is measured against, the correctness check); the results, one chart per benchmark with languages as bars and a table under each; the standing, written after the run; how to reproduce; and where the class, its source and the benchmark source live. Methodology states the rules every number obeys. Exemptions lists the stdlib pages with no benchmark and why.

Standings

Standings

Not yet measured on Proton.

Per package, the geometric mean of Cajeta’s time against the best competitor over the package’s benchmarks, with wins, losses and skips counted. Written up after the first run.

The language and the stdlib

Package
Language and cajeta.langLoops, exceptions, allocation, dispatch, strings, streams, SIMD, the Benchmarks Game
cajeta.collectionLists, maps, sets, trees, caches, sorting
cajeta.concurrentAtomics, locks, channels, fibers and tasks
cajeta.timeDates, times, zones, formatting
cajeta.hashXXH3, SipHash, the default hasher
cajeta.codecJSON, CSV, Base64, Base32, DEFLATE
cajeta.ioBuffers, files, sockets, the reactor
cajeta.mathTensors, linear algebra, FFT, random, .npy, geometry
cajeta.nucleoThe dataframe, autodiff, fusion and transforms
cajeta.wireWire codecs and zero-copy views
cajeta.searchEdit distance, fuzzy matching, n-grams
cajeta.processSpawning and piping
cajeta.reflectRuntime type information
cajeta.aotThe dependency-injection graph
cajeta.xpuDevice bandwidth, roofline, GEMM, one kernel on every backend
cajeta.gfxTexture sampling
ToolchainCompile time, start-up, binary size, build tool, notebook kernel, debugger

The libraries

LibraryAgainst
dev.cajeta.llmllama.cppPrefill and decode tokens/s by OS, driver, model and platform
dev.cajeta.mlscikit-learn, PyTorch, XGBoostClassical estimators, neural models, boosted trees
cajeta-httpGo, axum, Netty, Node, uvicornServing, WebSocket, SSE, TLS, client, start-up
primaveraSpring Boot, Quarkus, Micronaut, ASP.NET Core, FastAPIThe service shape, templates, start-up, build, DI

Machines

Phoenix: Ryzen 9 3950X, RTX 4090, 94 GB, Ubuntu 24.04 under WSL2 (CUDA and Vulkan). Proton: Ryzen AI MAX+ 395 with the Radeon 8060S, 64 GB, Ubuntu 26.04 (HIP and Vulkan). CPU and language rows default to Proton; the selector at the top of every page switches.

Running it

cd bench
./bench.sh --list                 # every benchmark under its catalog path
./bench.sh --bench hashmap-int    # one benchmark, Cajeta only
./bench.sh --area collection      # one package
./bench.sh --competitors ...      # the same, every pinned competitor too

The harness is the library dev.cajeta.bench; each ecosystem library has its own bench/ on the same harness and the same CSV schema, and its rows are copied here at publish time. Competitor toolchains are provisioned by competitors/setup.sh.