Files
RustAst/examples/record_specialization_test.myc
T
Michael Schimmel f7cb6655af feat: Specialize pipeline types for performance
Introduces type specialization for reactive pipeline nodes and their
data buffers. This eliminates the overhead of generic `Value` enums and
`SharedValueSeries` when dealing with known scalar or record types.

The architecture shifts buffer instantiation from the VM to the runtime
(RTL), leveraging type information from the AST. A new `out_type` field
is added to `BoundKind::Pipe` to store the static type of the pipeline's
output, determined by the type checker.

This enables the creation of specialized `RingBuffer<T>` and
`SharedRecordSeries` (for Struct-of-Arrays layout) when the output type
is known, significantly improving memory usage and processing speed for
time-series data, especially in financial analysis.
2026-03-02 22:03:24 +01:00

24 lines
563 B
Plaintext

;; Benchmark: 1.5us
;; Benchmark-Repeat: 1367
;; Test Record SoA specialization in Pipelines
;; Dank der neuen Spezialisierung wird hierfür im Hintergrund
;; eine SharedRecordSeries mit SoA-Layout (Float-Puffer für mid und range) erstellt.
(do
(def ohlc_stream (create-random-ohlc 42 10))
;; Pipe die einen Record erzeugt
(def indicator
(pipe [ohlc_stream]
(fn [ohlc]
{
:mid (/ (+ (.high ohlc) (.low ohlc)) 2.0)
:range (- (.high ohlc) (.low ohlc))
}
)
)
)
indicator
)