OOLOI.ORG
Menu

OOLOI

An Organism Evolved.

OVERVIEW

DOCUMENTATION

NEWSLETTER

A Wagner-Sized Benchmark

8/10/2025

1 Comment

 
Picture
When we last measured Ooloi’s storage engine, 50,000 musical objects occupied 14.5 KB – about 0.3 bytes per note. That already hinted at something unusual. The new benchmarks confirm it.

A 1,000-measure orchestral score for 3333 / 4331 + piano + divisi strings was used as the test case – the kind of piece length found in the largest late-Romantic works: Wagner’s Götterdämmerung, Strauss’s Elektra, or Mahler’s Eighth Symphony.

For non-musicians, 3333 / 4331 means three flutes, three oboes, three clarinets, three bassoons; four horns, three trumpets, three trombones, one tuba; plus piano and strings divided into multiple independent parts. In total: 29 staves, over 520 000 pitches, and thousands of simultaneous events – a scale that has historically defeated notation programs.

So the orchestra is medium-sized romantic, but the length and amount of music is extreme: everyone is playing fast notes from start to finish. The benchmark is designed to test a heavy score. Bring on the worst case, so to speak.

File Size and Persistence

Saving this complete piece took 1.3 seconds; loading it, 3.3 seconds. The resulting file was 172 KB – smaller than a single page of PDF. The piece does not yet include graphical information (layout, coordinates, glyphs), which would roughly double the size or more, but at these levels it makes no practical difference. Even if it becomes ten times larger, it's still of no consequence. The numbers are that good.

Streaming export (MIDI or MusicXML) completed in 1.25 seconds, using under 10 MB of memory. Even full materialisation of every internal element peaked at 244 MB, far below what such scores normally require.

Traversal and Computation

​Behind those figures lies the traversal engine that makes them possible. The full 520 000-pitch traversal completed in 0.58 seconds – roughly one million pitches per second. Cache repairs and dependency updates finished in 1–5 ms. Endpoint searches (for ties and slurs) are blazingly fast too, obviating the need for direct pointers.

For comparison, a score of this magnitude would have strained the limits of any existing notation program. Finale or Sibelius might take tens of seconds – sometimes minutes – to perform an equivalent operation. Ooloi completes the same structural pass between heartbeats.

What the Numbers Mean

What makes this possible is not optimisation trickery but architecture: immutable musical data, transducer-based traversal, and disciplined cache coherence across every layer. The system streams; it does not churn.

​For composers and engravers, these results suggest something once thought impossible – that even a full Wagnerian tutti might one day update instantly after an edit. Everything so far indicates that this should be achievable, not through hardware brute force but through architectural clarity.

For developers, the message is the same: a purely functional, streaming model can handle orchestral-scale data in constant memory, with sub-millisecond locality.

As far as I know, this is the first time a professional notation system has demonstrated real-time traversal of a Wagner-scale score with constant memory and sub-second exports. The invisible foundation – the hard part – is finished.

​All tests were run on a 2017 MacBook Pro with a 2.2 GHz six-core Intel i7 processor and 16 GB of RAM. A modern 2025 laptop or workstation would almost certainly halve every number reported here, and perhaps more. What feels instantaneous today will, in a few years, be beyond perception.

​Full benchmark results here.

Still on track towards that goal of smooth scrolling through the Elektra recognition scene.
1 Comment
Peter Bengtson link
11/10/2025 13:34:25

Update: M3 Benchmarks (October 2025)

The same benchmark suite has now been run on a 2024 MacBook Air with an Apple M3 chip and 16 GB of memory. As predicted, the newer hardware delivers consistent 2-3× improvements across the board:

- Cache refresh (10 measures × 1 staff): ~360 µs (was 1.0 ms)
- Compound rebuild (10 measures × 4 staves): ~1.49 ms (was 4.4 ms)
- Full instrument traversal: ~12.9 ms (was 35 ms)
- Endpoint search worst-case (50 measures): ~788 µs (was 2.3 ms)
- Typical slur endpoint search (1-2 measures): <50 µs (was <100 µs)
- Full traversal (520K pitches): ~316 ms (was 582 ms)
- Streaming export: ~592 ms (was 1.25 sec)

Every typical editing operation now completes in under 2 milliseconds—genuinely imperceptible. Real-world slur searches finish in well under 50 microseconds. The architectural decisions continue to pay dividends as hardware improves.

Reply



Leave a Reply.

    Author

    Peter Bengtson –
    Cloud architect, Clojure advocate, concert organist, opera composer. Craft over commodity. Still windsurfing through parentheses.

    Search

    Archives

    November 2025
    October 2025
    September 2025
    August 2025
    July 2025
    June 2025
    April 2025
    March 2025
    September 2024
    August 2024
    July 2024

    Categories

    All
    Architecture
    Benchmarks
    Clojure
    CLOS
    Common Lisp
    Death Of Igor Engraver
    Documentation
    Donald E Knuth
    Dorico
    Finale
    FrankenScore
    Franz Kafka
    Functional Programming
    Generative AI
    GPL V2
    GRPC
    Igor Engraver
    Jacques Derrida
    JVM
    License
    LilyPond
    Lisp
    MIDI
    MuseScore
    Ooloi
    Ortography
    Pitches
    Plugins
    Python
    Rhythm
    Rich Hickey
    Road Map
    Scheme
    Sibelius
    Site
    Sponsorship
    UI
    Vertigo
    VST/AU
    Wednesday Addams

    RSS Feed

Home
​Overview
Documentation
About
Contact
Newsletter
Ooloi is a modern, open-source music notation software designed to handle complex musical scores with ease. It is designed to be a flexible and powerful music notation software tool providing professional, high-quality results. The core functionality includes inputting music notation, formatting scores and their parts, and printing them. Additional features can be added as plugins, allowing for a modular and customizable user experience.​


  • Home
  • Overview
    • Background and History
    • Project Goals
    • Introduction for Musicians
    • Introduction for Programmers
    • Introduction for Anti-Capitalists
    • Technical Comparison
  • Documentation
  • About
  • Contact
  • Home
  • Overview
    • Background and History
    • Project Goals
    • Introduction for Musicians
    • Introduction for Programmers
    • Introduction for Anti-Capitalists
    • Technical Comparison
  • Documentation
  • About
  • Contact